魔力拼圖(Builder) (轉)
假如有一種拼圖可以拼貼成任何圖形.那麼我們只要生產出這種拼圖的單個部件就可以了.那樣就
會使複雜的圖形變的簡單化.也就是說我們只用設計每一個單個步驟就可以了.這樣做的好處是什
麼呢?很顯然.我們在利用元件生產產品.而不需要直接生產一個巨大的產品.因為可能這些元件本
身就具有通用性.另外的好處是.來自與其本身的複雜性.因為要生產就必須要組裝.而把生產和組
裝分開來考慮.那麼複雜性就會有所降低.也就是所謂的解偶.只做單一考慮那麼這裡就提供了兩個
重要職能.一個是負責生產部件的Builder另外一個是負責組合的Director.這樣就可以把負責的
產品解偶.
那麼,現在我們來模擬RPG遊戲中常出現的裝備匹配問題.人物可以配備的裝備為護手,護腳.胸甲
頭盔.那麼我們現在來分開實現,讓後統一整合.
interface IBuilder {
void BuilderHand();
void BuilderFeet();
void BulrHead();
void BuliderBody();
}
//可供生產的部件
abstract class AbstractPart{
string PartName;
}
class FeetPart:AbstractPart{
FeetPart(){
Console.Writeline("the Part is Feet");
}
}
class BodyPart:AbstractPart{
BodyPart(){
Console.Writeline("the Part is Body");
}
}
class HeadPart:AbstractPart{
HeadPart(){
Console.Writeline("the Part is Head");
}
}
class HandPart:AbstractPart{
HandPart(){
Console.Writeline("the Part is Hand");
}
}
//構造實際構造者
public class ArmBuilder : IBuilder{
AbstractPart Head,Feet,Body,Hand;
public void BuilderHand(){
Hand=new HandPart();
}
public void BuilderFeet(){
Feet=new FeetPart();
}
public void BuliderHead(){
Head=new HeadPart();
}
public void BuliderBody(){
Body=new BodyPart();
}
}
//整合者負責裝配
public class Director {
private IBuilder builder;
public Director( IBuilder builder ) {
this.builder = builder;
}
public void construct() {
builder.BuildFoot();
builder.BuildHead();
builder.Builody();
builder.BuildHand();
}
}
public class Client
{
public static int Main(string[] args)
{
IBuilder builder = new ArmBuilder();
Director director = new Director(builder);
director.Construct();
return 0;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用C++ Builder在桌面上畫圖 (轉)C++UI
- 用C++Builder實現工作列圖示動畫效果 (轉)C++UI動畫
- Automation In C++ Builder (轉)C++UI
- 足球戰術之Builder篇 (轉)UI
- c++builder快捷鍵大全 (轉)C++UI
- C++BUILDER 6 新特色 (轉)C++UI
- oracle Forms Builder常用函式 (轉載)OracleORMUI函式
- @Builder.Default 及@BuilderUI
- c++ builder中的ado使用 (轉)C++UI
- 在C++Builder使用TTS(Text To Speech) (轉)C++UITTS
- 用 C++Builder 編寫 Tray 程式 (轉)C++UI
- Borland C++Builder .RES 中文化 (轉)C++UI
- 在C++ Builder中定義事件 (轉)C++UI事件
- C++Builder常用程式碼片斷 (轉)C++UI
- Borland C++ Builder的API後門 (轉)C++UIAPI
- C++Builder的編譯超頻 (轉)C++UI編譯
- 專案經理與魔術師(轉)
- 將 SQL轉換成 Laravel Query Builder 程式碼SQLLaravelUI
- C++ Builder 初學問與答 (十一) (轉)C++UI
- C++ Builder 初學問與答 (十二) (轉)C++UI
- C++ Builder 初學問與答(三) (轉)C++UI
- C++Builder的幾則小應用 (轉)UI
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- 用C++Builder建立數字簽名 (轉)C++UI
- C++Builder下實現埠讀寫 (轉)C++UI
- C++ Builder 初學問與答(八) (轉)C++UI
- 類轉詞典 轉json 序列化 魔術方法JSON
- 解析Class檔案魔數和版本號[轉]
- 千幻魔鏡vr怎麼樣 千幻魔鏡vr眼鏡評測圖文解說VR
- Builder 模式UI模式
- Builder模式UI模式
- 在Report Builder 3.0中生成柱狀圖和折線圖NUUI
- 利用C++Builder進行精確計時 (轉)C++UI
- C++ BUILDER 訊息處理的深入探索 (轉)C++UI
- C++Builder使用ADSI建立web站點 (轉)C++UIWeb
- 怎樣在C++Builder中建立使用DLL (轉)UI
- 在C++Builder中建立共享記憶體段 (轉)C++UI記憶體
- Power Builder同時連線多個資料庫(轉)UI資料庫