您的位置:首页 > 其它

设计模式-创建型-抽象工厂模式

2018-03-06 22:22 281 查看
今天是工厂模式三兄弟的最后一个模式叫抽象工厂模式,抽象工厂模式与其他两兄弟在产品类上也是一样,无非就是工厂类的区别,简单工厂模式和工厂模式都是一个工厂只生产一种产品,但是在抽象工厂中一个工厂可以生产多种商品。举一个不太恰当的例子。有巧克力和面包两种食品,分别有富民食品厂和兴旺食品厂两个厂家生产。代码如下:
/// <summary>
    /// 食品类
    /// </summary>
    public abstract class Food
    {
        /// <summary>
        /// 用于显示食品类型
        /// </summary>
        public abstract void Show();
    }

    /// <summary>
    /// 巧克力类
    /// </summary>
    public class QiaoKeLi : Food
    {
        public override void Show()
        {
            Console.Write("巧克力");
        }
    }

    /// <summary>
    /// 面包类
    /// </summary>
    public class Bread : Food
    {
        public override void Show()
        {
            Console.Write("面包");
        }

    }

public abstract class AbstractFactory //抽象工厂基类
    {
        public abstract Food CreateQiaoKeLi();
        public abstract Food CreateBread();
    }

    public class FuMingFacctory : AbstractFactory//富民食品加工厂
    {
        public override Food CreateQiaoKeLi()
        {
            Console.Write("兴旺工厂出品巧克力");
            return new QiaoKeLi();
        }

        public override Food CreateBread()
        {
            Console.Write("富民工厂出品面包");
            return new Bread();
        }
    }

    public class XingWangFacctory : AbstractFactory//兴旺食品加工厂
    {
        public override Food CreateQiaoKeLi()
        {
            Console.Write("兴旺工厂出品巧克力");
            return new QiaoKeLi();
        }

        public override Food CreateBread()
        {
            Console.Write("兴旺工厂出品的面包");
            return new Bread();
        }

    }

//客户端调用
            AbstractFactory factory = new FuMingFacctory();
            factory.CreateBread();
            factory.CreateQiaoKeLi();

            AbstractFactory mfactory = new XingWangFacctory();
            mfactory.CreateBread();
            mfactory.CreateQiaoKeLi();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: