本篇介紹建立型模式中的建造者模式。
這裡想說一下,其實很多設計模式我們平時很少會完全用到,即便是最常用的都是如此,更何況一些不常用的,我們學習這些設計模式更多的是學習其程式設計的思想(我自己的理解),可別只學其形不學其神。
從定義我們暫時可以看出建造者模式可以將複雜物件的建立與表示解耦(設計原則中提到將變化的部分與不變的部分隔離開),使用同樣的構建過程可以建立不同的表示可能是通過繼承實現的。
例如我們要自己組裝一台台式電腦,cpu,顯示卡,顯示器,風扇和硬碟都是我們需要考慮的因素,在我們並不了解這些配置的時候我們就可以去跟電腦城的老闆說清楚我們的訴求,老闆轉達給師傅我們的訴求並讓師傅幫我們選好合適的配置並安裝。電腦,我們,電腦城老闆,師傅在建造者模式中扮演的角色看類圖來了解。
台式電腦:
class desktopcomputer
public void setcpu(string cpu)
public string getgpu()
public void setgpu(string gpu)
public string getdisplay()
public void setdisplay(string display)
public string getfan()
public void setfan(string fan)
public string getharddisk()
public void setharddisk(string harddisk)
@override
public string tostring() ';
}}
抽象建造者:
abstract class abstractmaster
}
具體建造者:
class seniormaster extends abstractmaster
@override
public void buildgpu()
@override
public void builddisplay()
@override
public void buildfan()
@override
public void buildharddisk()
}
電腦城老闆:
class boss
}
測試程式以及輸出結果:
//測試程式
public static void main(string args)
//輸出結果
desktopcomputer
台式電腦算是乙個比較複雜的物件了,但使用了建造者模式後,客戶端只需要呼叫指揮者類就可以建立符合要求的產品,例如顧客並不知道吃雞需要的配置,只要老闆知道就可以了(解耦);另乙個顧客再要求其他配置的電腦我們只需要再新增乙個具體建造者類(易於擴充套件)。
但產品內部過於複雜時,例如台式電腦,就可能會有多個建造者類(cpu,gpu,顯示卡,風扇和硬碟的不同組合),**過於冗餘。
設計模式之建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟 設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設 計模式 和...
設計模式之建造者模式
建造者模式也叫生成器模式,是一種物件建立型模式,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承或過載的方式,動態的建立具有復合屬性的物件。應用場景 物件的建立 builder 模式是為物件的建立而設計的模式 建立的是乙個復合物件 被建立的物件為乙個具有復合屬性的復合物件 關...
設計模式之建造者模式
在做服務介面的時候,往往在業務處理之前需要做業務校驗,格式校驗等業務前處理。這些介面有個相同的特徵,就是必須經過這些處理步驟之後才能做核心的業務處理,拓展的服務介面也必須經過這些處理。基於這個特徵,我們就來分析一下設計模式中,建造者模式。我們先建乙個基礎的服務類 public abstract cl...