當乙個產品的構建過程是固定且複雜多變的,則可以將該產品的構建過程抽象出來。
從乙個簡單的例子出發
比如:組裝一台電腦,你一定需要有cpu、主機板、記憶體、硬碟以及io外設。而每個部分你都可以選擇不同的型別:cpu可以是arm或者intel,記憶體可以是臺電的或是三星的等等。
這樣的話,如果將構建電腦的過程抽象出來,就可以如下表示:
public abstract class computerbuilder
而產品可以簡單表示為:
public class computer
}這個時候如果dell需要生產一台電腦就會這樣做:
public class dellcomputerbuilder extends computerbuilder
@override
public void buildmemory()
@override
public void buildio()
@override
public computer getproduct() }
最後經銷商director將負責把產品賣出:
public class director
public computer getcomputer()
}這四個類的關係大致如下:
image
與工廠模式(模板工廠、抽象工廠)的區別和聯絡
我們可以看到整個建造者模式是乙個特別強調產品構建過程的設計模式,而工廠模式則更加強調了產品的種類。
事實上,上面的例子我特地給出了dellcomputer,這說明computer完全可以作為乙個抽象產品類出現,從而滿足不同型別的builder。這些builder完全可以是聯想、華碩等等。
而在經銷商看來,只要你的產品沒有缺失(都含有cpu、memory、io),那麼經銷商就完全不必去關心電腦怎麼組裝的,也不用關心是哪個廠家生產的。經銷商只需要告訴客戶一件事,那就是我賣的是computer。而客戶需要哪種computer,只需要告訴經銷商即可。
通俗易懂設計模式解析 建造者模式
在本篇文章中,我們重點介紹建造者模式 builder pattern 建造者模式顧名思義,與建造建立相關。事實也是如此建造者模式也是建立型中的一種。在我們平常生活中會有比較複雜的東西的組成過程。比如電腦組成 手機組成 電視組成 等等。就拿電腦組成來說。可以由主機板 cpu 顯示卡等等組成。但是組成的...
最通俗易懂的設計模式之建造者模式
認識建造者模式,首先得清楚建造者模式使用涉及的角色 首先定義抽象的builder public abstract class builder再定義所builder 中需要構造的產品 產品 public class product public void setbuilda string builda...
裝飾者模式之通俗易懂
一句話 需要包裝,但不改變本質 同宗同源 在不改變原有物件的基礎之上,將功能附加到物件上。提供了比繼承更有彈性的替代方案 擴充套件原有物件功能 特點 1 注重覆蓋 擴充套件。2 裝飾器和被裝飾器都實現同乙個介面,主要目的是為了擴充套件之後依舊保留 oop 關係 同宗同源 3 滿足 is a 的關係。...