zoukankan      html  css  js  c++  java
  • 设计模式(十六):建造者模式

    一、定义

    将复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

    二、实例

    抽象建造者:定义规则和流程

     public abstract  class Builder
        {
            public abstract void Order();
            public abstract void Express();
            public abstract void Receiving();
            public abstract void Review();
        }

    流程实现:

     public class ProductFlow : Builder
        {     
            public override void Order()
            {
                Console.WriteLine("下订单.");
            }
    
            public override void Express()
            {
                Console.WriteLine("配送.");
            }
    
            public override void Receiving()
            {
                Console.WriteLine("收货.");
            }
    
            public override void Review()
            {
                Console.WriteLine("评价.");
            }
        }

    此外,需要对建造者进行包装,流程包装—建造流程提供者

     public class ProductFlowProvider
        {
            private Builder builder;
            public ProductFlowProvider(Builder _builder)
            {
                builder = _builder;
            }
            public void Flow()
            {
                builder.Order();
                builder.Express();
                builder.Receiving();
                builder.Review();
            }
        }

    客户端:

    //------------------------建造者模式-----------------------
                Builder.ProductFlowProvider pfp = new Builder.ProductFlowProvider(new Builder.ProductFlow());
                pfp.Flow();
                Console.ReadKey();

    运行:

    三、总结

    适用情形:

      需要生成的复杂的产品

        需要有一定的规则和流程  

    缺点:

      建造者模式的缺点在于难于应付分步骤构建算法的需求变动

  • 相关阅读:
    LeetCode Subarrays with K Different Integers
    LeetCode Repeated DNA Sequences
    为什么要使用静态方法
    String,StringBuilder,StringBuffer
    汉诺塔递归算法
    设计模式之代理模式
    设计模式之单例设计模式
    设计模式之工厂方法和抽象工厂
    设计模式之模板方法
    并发技巧清单(1)
  • 原文地址:https://www.cnblogs.com/sunchong/p/5141015.html
Copyright © 2011-2022 走看看