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

今天是工厂模式三兄弟的最后一个模式叫抽象工厂模式,抽象工厂模式与其他两兄弟在产品类上也是一样,无非就是工厂类的区别,简单工厂模式和工厂模式都是一个工厂只生产一种产品,但是在抽象工厂中一个工厂可以生产多种商品。举一个不太恰当的例子。有巧克力和面包两种食品,分别有富民食品厂和兴旺食品厂两个厂家生产。代码如下:

/// <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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值