zoukankan      html  css  js  c++  java
  • 创建型设计模式之建造者模式(Builder)

    结构
    意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    适用性
    • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
    • 当构造过程必须允许被构造的对象有不同的表示时。
     1  using System;
     2 
     3     // These two classes could be part of a framework,
     4     // which we will call DP
     5     // ===============================================
     6     
     7     class Director 
     8     {
     9         public void Construct(AbstractBuilder abstractBuilder)
    10         {
    11             abstractBuilder.BuildPartA();
    12             if (1==1 ) //represents some local decision inside director
    13             {
    14                 abstractBuilder.BuildPartB();            
    15             }
    16             abstractBuilder.BuildPartC();            
    17         }
    18 
    19     }
    20 
    21     abstract class AbstractBuilder 
    22     {
    23         abstract public void BuildPartA();
    24         abstract public void BuildPartB();
    25         abstract public void BuildPartC();
    26     }
    27 
    28     // These two classes could be part of an application 
    29     // =================================================
    30 
    31     class ConcreteBuilder : AbstractBuilder 
    32     {
    33         override public void BuildPartA()
    34         {
    35             // Create some object here known to ConcreteBuilder
    36             Console.WriteLine("ConcreteBuilder.BuildPartA called");
    37         }
    38                 
    39         override public void BuildPartB()
    40         {
    41             // Create some object here known to ConcreteBuilder
    42             Console.WriteLine("ConcreteBuilder.BuildPartB called");
    43         }
    44         
    45         override public void BuildPartC()
    46         {
    47             // Create some object here known to ConcreteBuilder
    48             Console.WriteLine("ConcreteBuilder.BuildPartC called");
    49         }
    50     }    
    51 
    52     /// <summary>
    53     ///    Summary description for Client.
    54     /// </summary>
    55     public class Client
    56     {
    57         public static int Main(string[] args)
    58         {
    59             ConcreteBuilder concreteBuilder = new ConcreteBuilder();
    60             Director director = new Director();
    61 
    62             director.Construct(concreteBuilder);
    63 
    64             return 0;
    65         }
    66     }
    建造者模式
  • 相关阅读:
    [GUIDE] How to Setup Ubuntu 16.04 LTS Xenial Xerus for Compiling Android ROMs
    设置Ubuntu 16.04 LTS的Unity启动器的位置命令
    sed系列:行或者模式匹配删除特定行
    HDOJ 4923 Room and Moor
    Office365client通过本地方式批量部署(即点即用部署)
    hdu 1867 A + B for you again
    Photoshop经常使用快捷键(2)
    SQL_为表和列加凝视
    从头认识java-17.5 堵塞队列(以生产者消费者模式为例)
    Unity5 怎样做资源管理和增量更新
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4669325.html
Copyright © 2011-2022 走看看