目錄
1.構建器模式
1.動機
2.模式定義
3.結構圖
4.模式的組成
2.例項
1.描述
2.**
3.要點總結
4.實現要點
5.參考
將乙個複雜物件的構建與表示相分離,使得同樣的構建過程(穩定)可以建立不同的表示(變化)。
(1)、抽象建造者角色(builder):為建立乙個product物件的各個部件指定抽象介面,以規範產品物件的各個組成成分的建造。一般而言,此角色規定要實現複雜物件的哪些部分的建立,並不涉及具體的物件部件的建立。
(2)、具體建造者(concretebuilder)
1)實現builder的介面以構造和裝配該產品的各個部件。即實現抽象建造者角色builder的方法。
2)定義並明確它所建立的表示,即針對不同的商業邏輯,具體化複雜物件的各部分的建立
3) 提供乙個檢索產品的介面
4) 構造乙個使用builder介面的物件即在指導者的呼叫下建立產品例項
(3)、指導者(director):呼叫具體建造者角色以建立產品物件的各個部分。指導者並沒有涉及具體產品類的資訊,真正擁有具體產品的資訊是具體建造者物件。它只負責保證物件各部分完整建立或按某種順序建立。
(4)、產品角色(product):建造中的複雜物件。它要包含那些定義元件的類,包括將這些元件裝配成產品的介面。
組裝汽車流程
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
//構建器模式:汽車組裝
namespace pattern
}public class direction
}public abstract class builder
//別克
public class bkbuilder:builder
public override void builderwindow()
public override void builderwheel()
public override car getcar()
}// ...
//奧迪
public class adbuilder:builder
public override void builderwindow()
public override void builderwheel()
public override car getcar()
}// ...
class program}}
在建造者模式中,指揮者是直接與客戶端打交道的,指揮者將客戶端建立產品的請求劃分為對各個部件的建造請求,再將這些請求委派到具體建造者角色,具體建造者角色是完成具體產品的構建工作的,卻不為客戶所知道。 建造者模式主要用於「分步驟來構建乙個複雜的物件」,其中「分步驟」是乙個固定的組合過程,而複雜物件的各個部分是經常變化的。 產品不需要抽象類,由於建造模式的建立出來的最終產品可能差異很大,所以不大可能提煉出乙個抽象產品類。 在前面文章中介紹的抽象工廠模式解決了「系列產品」的需求變化,而建造者模式解決的是 「產品部分」 的需要變化。 由於建造者隱藏了具體產品的組裝過程,所以要改變乙個產品的內部表示,只需要再實現乙個具體的建造者就可以了,從而能很好地應對產品組成元件的需求變化。 李建忠設計模式(一)
目錄 1.軟體設計的目標 2.物件導向設計原則 1.重新認識物件導向 2.物件導向設計原則 1.依賴倒置原則 dip 2.開放封閉原則 ocp 3.單一職責原則 srp 4.liskov替換原則 lsp 5.介面隔離原則 isp 6.有限使用物件組合,而不是類繼承 7.封裝變化點 8.針對介面程式設...
李建忠設計模式 原型模式
目錄 1.原型模式 prototype 1.動機 2.定義 3.結構圖 4.模式的組成 2.例項 3.要點總結 4.參考 使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。模式設計 gof 原型類 prototype 原型類,宣告乙個clone自身的介面 具體原型類 concret...
李建忠設計模式 抽象工廠
提供乙個介面,讓該介面負責建立一系列 相關或者相互依賴的物件 無需指定它們具體的類。設計模式 gof 抽象產品類角色 abstractproduct 為抽象工廠中相互依賴的每種產品定義抽象介面物件,也可以這樣說,有幾種產品,就要宣告幾個抽象角色,每乙個抽象產品角色和一種具體的產品相匹配。具體產品類 ...