設計模式學習筆記(四) Builder生成器模式

2021-09-05 15:24:02 字數 1925 閱讀 2740

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種設計模式之一,但是實際中用途廣泛,並且可以作為學習 工廠方法模式 以及 抽象工廠模式 的基礎。在簡單工廠模式中,工廠類提供乙個建立產品的工廠方法,用於建立各種產品。客戶端只需傳入對應的...