zoukankan      html  css  js  c++  java
  • 设计模式--建造者模式

    namespace Builder
    {
        //产品
        public class Product
        {
            public string PartA { get; set; }
            public string PartB { get; set; }
            public string PartC { get; set; }
    
            public  override string ToString()
            {
                return PartA+" "+PartB+" "+PartC;
            }
    
        }
    
        //抽象创建者
        public abstract class Builder
        {
            public abstract void CreateA();
            public abstract void CreateB();
            public abstract void CreateC();
    
            protected Product product=new Product();
    
            public  Product GetProduct()
            {
                return product;
            }
        }
    
        //具体创建者
        public class Worker:Builder
        {
            public override void CreateA()
            {
                product.PartA="PartA";
            }
            public override void CreateB()
            {
                product.PartB="PartB";
            }
            public override void CreateC()
            {
                product.PartC="PartC";
            }
        }
    
        //Director 指挥创建过程
        public class Director
        {
            Builder builder;
            public Product Build()
            {
                builder.CreateA();
                builder.CreateB();
                builder.CreateC();
                return builder.GetProduct();
            }
            public Director( Builder builder)
            {
                this.builder=builder;
            }
        }
    
        public static class client
        {
            public static void Test()
            {
                Director director=new Director(new Worker());
                Product product=  director.Build();
                Console.WriteLine(product.ToString());
            }
        }
    }

    Director把建造的流程固化了,也可以不要这个director;直接交给客户端自由搭配

    namespace Builder2
    {
        //产品
        public class Product
        {
            public string PartA { get; set; }
            public string PartB { get; set; }
            public string PartC { get; set; }
    
            public  override string ToString()
            {
                return PartA+" "+PartB+" "+PartC;
            }
    
        }
    
        //抽象创建者
        public abstract class Builder
        {
            public abstract Builder CreateA(string str);
            public abstract Builder CreateB(string str);
            public abstract Builder CreateC(string str);
    
            protected Product product=new Product();
    
            public  Product GetProduct()
            {
                return product;
            }
        }
    
        //具体创建者
        public class Worker:Builder
        {
            public override Builder CreateA(string str)
            {
                product.PartA=str;
                return this;
            }
            public override Builder CreateB(string str)
            {
                product.PartB=str;
                 return this;
            }
            public override Builder CreateC(string str)
            {
                product.PartC=str;
                 return this;
            }
        }
    
        public static class Client
        {
            public static void Test()
            {
                Builder builder=new Worker();
                builder.CreateA("aa")
                .CreateB("bb")
                .CreateC("cc");
                Console.WriteLine(builder.GetProduct().ToString());
            }
        }
    }
     
    SQL Server
  • 相关阅读:
    使用PrintDocument进行打印
    【转】封装原生JS实现Ajax
    休眠到指定时分秒
    [原创]vscode初体验
    反编译网站
    命令行工具aspnet_regiis.exe实现加密和解密web.config
    Sqlserver内置函数实现MD5
    [转]如何循序渐进向dotnet架构师发展
    [转]高级系统架构师培训笔记
    理解RESTful
  • 原文地址:https://www.cnblogs.com/zlgan/p/12169145.html
Copyright © 2011-2022 走看看