美文网首页
{C#}设计模式辨析.建造者

{C#}设计模式辨析.建造者

作者: 码农猫爸 | 来源:发表于2021-08-04 09:32 被阅读0次

背景

  • 已定型步骤中,由director提取部分步骤并预制成多种产品
  • 与模板的异同

示例

using static System.Console;

namespace DesignPattern_Builder
{
    public interface ICakeBuilder
    {
        void SetSize(bool big);
        void AddEggs(int amount);
        void AddVegitable(string name);
        void AddSauce(bool sweet);
    }

    // 主厨,相当于Builder
    public class Chef: ICakeBuilder
    {
        public void AddEggs(int amount)
            => WriteLine($"{amount} eggs {(amount > 1 ? "are" : "is")} added.");

        public void AddSauce(bool sweet)
            => WriteLine($"{(sweet ? "Sweet" : "Spicy")} sauce is added.");

        public void AddVegitable(string name)
            => WriteLine($"{name} is added.");

        public void SetSize(bool big)
            => WriteLine($"A {(big ? "big" : "small")} size of cake is set.");
    }

    // 服务员,相当于Director
    public class Waitor
    {
        // 允许多名建造者
        private readonly ICakeBuilder chef;

        public Director(ICakeBuilder chef)
        {
            this.chef= chef;
        }

        // 步骤需求不由建造者决定,在本类中预制产品,下同
        // 全套步骤
        public void CookNormal()
        {
            WriteLine();
            chef.SetSize(false);
            chef.AddEggs(1);
            chef.AddVegitable("Green onion");
            chef.AddSauce(true);

            ReadKey();
        }

        // 部分步骤
        public void CookSpicical()
        {
            WriteLine();
            chef.SetSize(true);  
            chef.AddEggs(2);  
            chef.AddSauce(false);  

            ReadKey();
        }
    }

    public class Client
    {
        public void Execute()
        {
            var builder= new Chef();
            var director= new Waitor(builder);
            director.CookNormal();
            director.CookSpicical();
        }
    }
    
    class Demo
    {
        static void Main(string[] args)
        {
            var client = new Client();
            client.Execute();
        }
    }
}

相关文章

  • {C#}设计模式辨析.建造者

    背景 已定型步骤中,由director提取部分步骤并预制成多种产品 与模板的异同建造者时,负责人通知建造者完成多种...

  • 《C#设计模式》- 建造者模式

    建造者模式是一种较为复杂的创建型模式,它将客户端与包含多个组成部分的复杂对象的创建过程分离,客户端无须知道复杂对象...

  • {C#}设计模式辨析.中介者

    背景 成员间通过中介者传话 示例

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • C#设计模式之建造者模式

    文章参考来源:http://www.cnblogs.com/zhili/p/BuilderPattern.html...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

网友评论

      本文标题:{C#}设计模式辨析.建造者

      本文链接:https://www.haomeiwen.com/subject/uuwuvltx.html