builder
生成器模式是一種建立型模式,它主要是應對專案中一些複雜物件的建立工作。所謂「複雜物件」,是只:此物件中還含有其它的子物件。
builder
模式所面對的情況是:各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將他們組合在一起的演算法卻相對穩定。簡單的說:子物件變化較頻繁,對演算法相對穩定。
這是解決乙個複雜物件的建立工作,現在變化的部分和相對穩定的部分已經明確,我們要做的是隔離變化,如何將子物件和演算法隔離是要解決的問題。
《設計模式》中說道:將乙個複雜物件的構建與其表示向分離,使得同樣的構建過程可以建立不同的表示。
我們現在定義乙個場景:還是選擇汽車,bmw和bora。試想一下,如果我們用較為普通的寫法可以寫成如下**:
public static void <?xml:namespace prefix = st1 />main()
public abstract class car
public override void buildwheel()
public override void buildoilbox()
public override void buildbody()
public override car getcar()
}public class bmwcar:car
bora:
public class borabuilder:abstractbuilder
public override void buildwheel()
public override void buildoilbox()
public override void buildbody()
public override car getcar()
}public class boracar:car
現在我們使用一種manager方法來管理汽車的構建,這也就是builder模式中提到的相對穩定的演算法,我用乙個類來實現:
private class carmanager
現在我們可以在客戶程式中呼叫這個manager來構建car:
public static void main()
{carmanager manager = new carmanager();
builderclass.car car =
manager.createcar(new builderclass.borabuilder());
結果如下:
wheel:borawheel
oilbox:boraoilbox
body:borabody
如果我們現在要換成bmw,我們只要在main()函式中改變manager.createcar中的引數就可以:
public static void main()
{carmanager manager = new carmanager();
builderclass.car car =
manager.createcar(new builderclass.bmwbuilder());
結果如下:
wheel:bmwwheel
oilbox:bmwoilbox
body:bmwbody
現在我們再來看看builder模式的幾個要點:
builder模式主要用於構建乙個複雜的物件,但這個物件構建的演算法是穩定的,物件中的各個部分經常變化。builder模式主要在於應對複雜物件各個部分的頻繁需求變動。但是難以應對演算法的需求變動。這點一定要注意,如果用錯了,會帶來很多不必要的麻煩。
課程中還提到了.net中的builder模式的應用。如:page類中的oninit()等方法的實現。我們在寫乙個web頁面的時候。他的codebehind**都是繼承system.web.ui.page基類的。oninit()函式是可以重寫的
設計模式讀書筆記之建造者模式 Builder
建造者模式 將複雜物件的建造和表示分離,使同樣的建造過程可以創造出不同細節的產品.建造者模式,聽名字就應該知道和工廠模式一樣,是用來創造物件的。但是建造者和工廠模式的區別就是工廠模式只關注最終的產品,它往往是簡單的呼叫被建立者的建構函式 而建造者更關心細節,它定義了建立乙個複雜物件所需的步驟,而建立...
Java設計模式(五) 建造者模式Builder
我們要建造乙個複雜的產品。比如 神舟飛船 iphone。這個複雜的產品的建立,有這樣乙個問題需要處理 要構建的物件,宇宙飛船 package com.iter.devbox.builder 宇宙飛船 author shearer public class airship public orbital...
設計模式學習筆記(四) 簡單工廠模式
2 典型實現 3 例項 4 簡化 5 主要優點 6 主要缺點 7 適用場景 8 總結 簡單工廠模式不屬於gof23種設計模式之一,但是實際中用途廣泛,並且可以作為學習 工廠方法模式 以及 抽象工廠模式 的基礎。在簡單工廠模式中,工廠類提供乙個建立產品的工廠方法,用於建立各種產品。客戶端只需傳入對應的...