• 设计模式学习笔记——建造者模式(Builder Pattern)


    学习TerryLee的设计模式颇有感触,留下以下笔记以作日后参考。

    代码
    //-----------------------------------------------
    //创建者模式是处理一系列组合对象的创建,且这种组合方式是不同的。
    //-----------------------------------------------

    #region 产品

    public class Product
    {
    public List<string> SomeThing = new List<string>();
    }

    #endregion

    #region 产品的构造器

    public abstract class AbstractBuilder
    {
    public abstract void BildA();

    public abstract void BildB();

    public abstract void BildC();

    public abstract void BildD();

    public abstract Product BuilProduct();
    }

    public class ABuilder : AbstractBuilder
    {
    private Product product = new Product();

    public override void BildA()
    {
    product.SomeThing.Add(
    "Aa");
    }

    public override void BildB()
    {
    product.SomeThing.Add(
    "Ab");
    }

    public override void BildC()
    {
    product.SomeThing.Add(
    "Ac");
    }

    public override void BildD()
    {
    product.SomeThing.Add(
    "Ad");
    }

    public override Product BuilProduct()
    {
    return product;
    }
    }

    public class BBuilder : AbstractBuilder
    {
    private Product product = new Product();

    public override void BildA()
    {
    product.SomeThing.Add(
    "Ba");
    }

    public override void BildB()
    {
    product.SomeThing.Add(
    "Bb");
    }

    public override void BildC()
    {
    product.SomeThing.Add(
    "Bc");
    }

    public override void BildD()
    {
    product.SomeThing.Add(
    "Bd");
    }

    public override Product BuilProduct()
    {
    return product;
    }
    }

    #endregion

    #region 工厂

    public class ProductFactory
    {
    public Product CreateProduct(AbstractBuilder builder)
    {
    return builder.BuilProduct();
    }
    }

    #endregion

    #region 客户端

    public class App
    {
    public static void Main(string[] args)
    {
    ProductFactory factory
    = new ProductFactory();

    string strbuiderName = "ABuilder";

    AbstractBuilder buider;

    buider
    = (AbstractBuilder)Assembly.Load("FactoryMethod").CreateInstance("FactoryMethod." + strbuiderName);

    Product product
    = factory.CreateProduct(buider);
    }
    }

    #endregion
  • 相关阅读:
    如何快速把 Vue 项目升级到 webpack3
    10分钟学会ES7+ES8
    数组的32场演唱会
    你做的拷贝是真的深拷贝吗
    浅谈CSS模块化
    CORS跨域资源共享你该知道的事儿
    像VUE一样写微信小程序-深入研究wepy框架
    小型Web页打包优化(下)
    PT与PX区别
    px、pt和em的区别
  • 原文地址:https://www.cnblogs.com/chuifeng/p/1916600.html
Copyright © 2020-2023  润新知