抽象工厂

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/**
 * 抽象工厂
 * http://www.cnblogs.com/zhili/p/AbstractFactory.html
 * ***/
namespace AbstractFactoryPatternDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("AbstractFactoryPatternDemo");
            AbstractFactory beijingFac = new BeijingFactory();
            AbstractFactory hebeiFac = new HebeiFactory();
            AbstractYabo bjYabo = beijingFac.MakeYabo();
            bjYabo.Show();
            AbstractYabo hbYabo = hebeiFac.MakeYabo();
            hbYabo.Show();
            AbstractYajia bjYajia = beijingFac.MakeYajia();
            bjYajia.Show();
            AbstractYajia hbYajia = hebeiFac.MakeYajia();
            hbYajia.Show();
            Console.Read();
        }
    }
    abstract class AbstractYabo
    {
        public abstract void Show();
    }
    abstract class AbstractYajia
    {
        public abstract void Show();
    }
    class BeijingYabo : AbstractYabo
    {
        public override void Show()
        {
            Console.WriteLine("我是北京鸭脖");
        }
    }
    class BeijingYajia : AbstractYajia
    {
        public override void Show()
        {
            Console.WriteLine("我是北京鸭架");
        }
    }
    class HebeiYabo : AbstractYabo
    {
        public override void Show()
        {
            Console.WriteLine("我是河北鸭脖");
        }
    }
    class HebeiYajia : AbstractYajia
    {
        public override void Show()
        {
            Console.WriteLine("我是河北鸭架");
        }
    }
    abstract class AbstractFactory
    {
        public abstract AbstractYabo MakeYabo();
        public abstract AbstractYajia MakeYajia();
    }
    class BeijingFactory : AbstractFactory
    {
        public override AbstractYabo MakeYabo()
        {
            Console.WriteLine("制作北京鸭脖");
            return new BeijingYabo();
        }
        public override AbstractYajia MakeYajia()
        {
            Console.WriteLine("制作北京鸭架");
            return new BeijingYajia();
        }
    }
    class HebeiFactory : AbstractFactory
    {
        public override AbstractYabo MakeYabo()
        {
            Console.WriteLine("制作河北鸭脖");
            return new HebeiYabo();
        }
        public override AbstractYajia MakeYajia()
        {
            Console.WriteLine("制作河北鸭架");
            return new HebeiYajia();
        }
    }
}

 

posted @ 2013-12-20 09:07  WBFF  阅读(152)  评论(0)    收藏  举报