設計模式學習筆記四——Builder模式

來源:互聯網
上載者:User
動機:一個複雜物件由多個子物件構成,該對象建立的演算法相對不變,構成的子物件劇烈變化。如何應對子物件的劇烈變化,隔離比較穩定的建立演算法和易變的子物件,使客戶程式不隨著子物件的改變而改變。

情境:ThinkPad系列產品和一般筆記本一樣,擁有比較固定的組成部分:主板、CPU、硬碟、顯示器、鍵盤……。假設所有ThinkPad的組裝過程完全相同,不同績效參數的部分組合在一起形成不同型號的ThinkPad,比如T43和T60。如何在組裝過程不變的情況下,做出適合型號的所需組件(以CPU和主板為例),就能快速組裝成我們所要型號的ThinkPad?

結構

代碼實現

/**//*
 * 子物件CPU
*/
namespace DesignPattern.Builder
{
    public abstract class CPU
    {
    }

    public class T43CPU : CPU
    {
    }

    public class T60CPU : CPU
    {
    }
}

/**//*
 * 子物件主板
*/
namespace DesignPattern.Builder
{
    public abstract class Mainboard
    {
    }

    public class T43Mainboard : Mainboard
    {
    }

    public class T60Mainboard : Mainboard
    {
    }
}

/**//*
 *複雜物件ThinkPad
*/
namespace DesignPattern.Builder
{
    public abstract class ThinkPad
    {
    }

    public class T43ThinkPad : ThinkPad
    {
    }

    public class T60ThinkPad : ThinkPad
    {
    }
}

 

/**//*
 * ThinkPad產生器
*/
namespace DesignPattern.Builder
{
    public abstract class ThinkPadBuilder
    {
        public abstract CPU BuildCPU();
        public abstract Mainboard BuildMainboard();
        public abstract ThinkPad GetThinkPad();
    }

    public class T43Builder : ThinkPadBuilder
    {
        public override CPU BuildCPU()
<img id=Codehighlighter1_629_672_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_629_672_Closed_Text.style.display='none'; Codehigh

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.