码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式--建造者模式

时间:2020-01-09 01:29:31      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:abstract   code   work   ted   pre   nbsp   创建过程   rtb   tor   

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());
        }
    }
}

 

 

设计模式--建造者模式

标签:abstract   code   work   ted   pre   nbsp   创建过程   rtb   tor   

原文地址:https://www.cnblogs.com/zlgan/p/12169145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!