C#設計模式之建造者模式

來源:互聯網
上載者:User

標籤:override   建立   private   客戶   return   returns   複雜   例子   rri   

    建造者模式可以將組件本身和它們的組裝過程分開,關注如何一步步建立一個包含多個組成部分的複雜物件,使用者只需要指定複雜物件的類型即可得到該對象,而無須知道其內部的具體構造細節。

建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造者模式的定義:

將用戶端與包含多個組件的複雜物件的建立過程分離,用戶端無須知道複雜物件的內部組成部分與裝配方式,只需要知道所需建造者的類型即可;

關注如何逐步建立一個複雜的對象,不同的建造者定義了不同的建立過程;

建造者模式的結構:

建造者模式包含以下4個角色:

Builder(抽象建造者)

ConcreteBuilder(具體建造者)

Product(產品)

Director(指揮者)

例子:

/// <summary>/// 抽象建造者/// </summary>public abstract class Builder{    public abstract void BuilderPartA();    public abstract void BuilderPartB();    public abstract void BuilderPartC();    /// <summary>    /// //建立產品對象    /// </summary>    protected Product product = new Product();    /// <summary>    /// 返回產品對象    /// </summary>    /// <returns></returns>    public Product GetResult()    {        return product;    }}
/// <summary>/// 產品類/// </summary>public class Product{    //生產的產品    public string PartA { get; set; }    public string PartB { get; set; }    public string PartC { get; set; }}
/// <summary>/// 具體建造者/// </summary>public class ConcreteBuilder:Builder{    /// <summary>    /// 產品A    /// </summary>    public override void BuilderPartA()    {        product.PartA = "A1";        Console.WriteLine("生產了A1產品");    }    /// <summary>    /// 產品B    /// </summary>    public override void BuilderPartB()    {        product.PartB = "B1";        Console.WriteLine("生產了B1產品");    }    /// <summary>    /// 產品C    /// </summary>    public override void BuilderPartC()    {        product.PartC = "C1";        Console.WriteLine("生產了C1產品");    }}
/// <summary>/// 指揮者/// </summary>public class Director{    private Builder _builder;    public Director(Builder builder)    {        this._builder = builder;    }    public void SetBuilder(Builder builder)    {        this._builder = builder;    }    /// <summary>    /// 產品構建與組裝方法    /// </summary>    /// <returns></returns>    public Product Construct()    {        _builder.BuilderPartA();        _builder.BuilderPartB();        _builder.BuilderPartC();        return _builder.GetResult();    }}

 

//用戶端調用Builder builder = new ConcreteBuilder();Director director = new Director(builder);Product product = director.Construct();

 

C#設計模式之建造者模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.