程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#設計模式之建造者設計模式(Builder)(1)

C#設計模式之建造者設計模式(Builder)(1)

編輯:關於C語言

一、建造者(Builder)模式

建造者模式可以將一個產品的內部表象與產品的生成過程分割開來,從而可以使一個建造過程生成具有不同的內部表象的產品對象。

對象性質的建造

有些情況下,一個對象會有一些重要的性質,在它們沒有恰當的值之前,對象不能作為一個完整的產品使用。比如,一個電子郵件有發件人地址、收件人地址、主題、內容、附錄等部分,而在最起碼的收件人地址未被賦值之前,這個電子郵件不能發出。

有些情況下,一個對象的一些性質必須按照某個順序賦值才有意義。在某個性質沒有賦值之前,另一個性質則無法賦值。這些情況使得性質本身的建造涉及到復雜的商業邏輯。

這時候,此對象相當於一個有待建造的產品,而對象的這些性質相當於產品的零件,建造產品的過程就是組合零件的過程。由於組合零件的過程很復雜,因此,這些"零件"的組合過程往往被"外部化"到一個稱作建造者的對象裡,建造者返還給客戶端的是一個全部零件都建造完畢的產品對象。

命名的考慮

之所以使用"建造者"而沒有用"生成器"就是因為用零件生產產品,"建造"更為合適,"創建"或"生成"不太恰當。

二、Builder模式的結構:

建造者(Builder)角色:給出一個抽象接口,以規范產品對象的各個組成成分的建造。一般而言,此接口獨立於應用程序的商業邏輯。模式中直接創建產品對象的是具體建造者(ConcreteBuilder)角色。具體建造者類必須實現這個接口所要求的方法:一個是建造方法,另一個是結果返還方法。

具體建造者(Concrete Builder)角色:擔任這個角色的是於應用程序緊密相關的類,它們在應用程序調用下創建產品實例。這個角色主要完成的任務包括:

實現Builder角色提供的接口,一步一步完成創建產品實例的過程。

在建造過程完成後,提供產品的實例。

指導者(Director)角色:擔任這個角色的類調用具體建造者角色以創建產品對象。導演者並沒有產品類的具體知識,真正擁有產品類的具體知識的是具體建造者對象。

產品(Product)角色:產品便是建造中的復雜對象。

指導者角色是於客戶端打交道的角色。導演者角色將客戶端創建產品的請求劃分為對各個零件的建造請求,再將這些請求委派給具體建造者角色。具體建造者角色是做具體建造工作的,但卻不為客戶端所知。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved