【设计模式】建造者模式

来源:互联网 发布:感恩安全座椅 知乎 编辑:程序博客网 时间:2024/06/08 12:30

一、定义:

       将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

二、结构图:


三、代码展示:

       Product类——产品类,由多个部件组成

class Product{    IList<string> parts = new List<string>();    public void Add(string part)    {        parts.Add(part);    }    public void Show()    {        Console.WriteLine("\n产品 创建 ----");        foreach (string part in parts)        {            Console.WriteLine(part);        }    }}
       Builder类——具体建造者类

abstract class Builder{    public abstract void BuildPartA();    public abstract void BuildPartB();    public abstract Product GetResult();}
       ConcreteBuilder1类——具体建造者类

class ConcreteBuilder1 : Builder{    private Product product = new Product();    public override void BuildPartA()    {        product.Add("部件A");    }    public override void BuildPartB()    {        product.Add("部件B");    }    public override Product GetResult()    {        return product;    }}
       ConcreteBuilder2类——具体建造者类
class ConcreteBuilder2 : Builder{    private Product product = new Product();    public override void BuildPartA()    {        product.Add("部件X");    }    public override void BuildPartB()    {        product.Add("部件Y");    }    public override Product GetResult()    {        return product;    }}
       Director类——指挥者类

class Director{    public void Construct(Builder builder)    {        builder.BuildPartA();        builder.BuildPartB();    }}
       客户端代码

static void Main(string[] args){    Director director = new Director();    Builder b1 = new ConcreteBuilder1();    Builder b2 = new ConcreteBuilder2();    director.Construct(b1);    Product p1 = b1.GetResult();    p1.Show();    director.Construct(b2);    Product p2 = b2.GetResult();    p2.Show();    Console.Read();}
       结果显示如下:



原创粉丝点击