zoukankan      html  css  js  c++  java
  • CSharp设计模式读书笔记(6):建造者模式(学习难度:★★★★☆,使用频率:★★☆☆☆)

    建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    模式角色与模式:

    建造者模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以是一个建造过程生成具有不同的内部表象的产品对象。

    示例代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace CSharp.DesignPattern.BuilderPattern
    {
        class Program
        {
            static void Main(string[] args)
            {
                Director director = new Director();
    
                IBuilder b1 = new ConcreteBuilder1();
                IBuilder b2 = new ConcreteBuilder2();
    
                Product p1;
                Product p2;
    
                director.Construct(b1);
                p1 = b1.GetResult();
    
                director.Construct(b2);
                p2 = b2.GetResult();
    
                p1.Display();
                p2.Display();
    
                Console.ReadLine();
            }
        }
    
        // 指挥者
        class Director
        {
            public void Construct(IBuilder builder)
            {
                builder.BuildPartA();
                builder.BuildPartB();
            }
        }
        
        // 抽象建造者 
        interface IBuilder
        {
            void BuildPartA();
            void BuildPartB();
            Product GetResult();
        }
    
        // 具体建造者
        class ConcreteBuilder1 : IBuilder
        {
            private Product product;
    
            public void BuildPartA()
            {
                product = new Product();
                product.Add("PartA");
            }
    
            public void BuildPartB()
            {
                product.Add("PartB");
            }
    
            public Product GetResult()
            {
                return product;
            }
        }
    
        // 具体建造者
        class ConcreteBuilder2 : IBuilder
        {
            private Product product;
    
            public void BuildPartA()
            {
                product = new Product();
                product.Add("PartX");
            }
    
            public void BuildPartB()
            {
                product.Add("PartY");
            }
    
            public Product GetResult()
            {
                return product;
            }
        }
    
        class Product
        {
            List<String> parts = new List<String>();
    
            public void Add(String part)
            {
                parts.Add(part);
            }
    
            public void Display()
            {
                Console.WriteLine("Display result:");
                foreach (String obj in parts)
                {
                    Console.WriteLine(obj);
                }
            }
        }
    }
     
  • 相关阅读:
    Docker Machine 管理-管理machine(17)
    Docker Machine 管理-创建machine(16)
    Docker Machine 管理-安装docker-machine(15)
    kvm无人值守安装centos6
    存储-docker volume 生命周期管理(14)
    存储-docker数据共享(13)
    存储-docker存储(12)
    网络-Docker 提供的几种原生网络和自定义网络(11)
    docker容器管理-含静态Ip(10)
    rocketmq单点部署
  • 原文地址:https://www.cnblogs.com/thlzhf/p/3993125.html
Copyright © 2011-2022 走看看