【设计模式】建造者模式

1.产品类Product

2.抽象建造者类Builder

3.具体建造者类ConcreteBuilder(继承自Builder,包含产品变量和一系列对产品操作的方法)

4.指挥者类Director(指挥建造提高便利性,真正调用具体建造者用方法的地方)

使用:

Director director=new Director();

Builder builder =new ConcreteBuilder();

director.Construct(builder);//该处调用一系列具体建造者中的建造方法

builder.GetResult();

简述:对于一系列的操作的封装和隔离(主要是创建复杂对象),使用director来进行处理,举例如肯德基产品的制造,为何可以保证全国各门店的相同产品的味道几乎一致,因为他们有严格的产品制造流程

/// <summary>
    /// 肯德基产品制作接口
    /// </summary>
    public interface IProduct
    {
        void AddSalt();
        void AddFlour();
        void AddMeat();
        void Make();
    }

    /// <summary>
    /// 具体的产品-汉堡包
    /// </summary>
    public class ProductHamburger : IProduct
    {
        public string _productName;
        public ProductHamburger(string productname)
        {
            _productName = productname;
        }
        public void AddFlour()
        {
            Console.WriteLine("汉堡加面粉");
        }

        public void AddMeat()
        {
            Console.WriteLine("汉堡加肉");
        }

        public void AddSalt()
        {
            Console.WriteLine("汉堡加调料");
        }

        public void Make()
        {
            Console.WriteLine("制作汉堡");
        }
    }

    /// <summary>
    /// 真正的制作人-店员
    /// </summary>
    public class KFCDirector
    {
        private IProduct pd;
        public KFCDirector(IProduct pd)
        {
            this.pd = pd;
        }
        public void MakeProduct()
        {
            pd.AddFlour();
            pd.AddMeat();
            pd.AddSalt();
            pd.Make();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {

            //定义一个产品
            IProduct product = new ProductHamburger("汉堡包");

            //定义一个店员
            KFCDirector kFC = new KFCDirector(product);

            //制作产品
            kFC.MakeProduct();
            Console.ReadLine();
        }
    }

如此操作可以确保任何一个产品的参数基本保持一致,如果有新的产品只要添加新的产品类就可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值