從Client角度來看工廠方式,抽象工廠和建造者

2022-04-29 12:57:06 字數 1067 閱讀 3396

1、工廠方法

client呼叫父類提供的介面,但是需要根據不同的引數,獲得不同的子類例項。

例如:client是乙個智慧型手機測評人,他需要測試不同品牌智慧型手機的功能,如打**、照相等。作為測評人,

client不需要知道手機怎麼生產的,他只需要從某東下訂單,買一些華為、小公尺或蘋果手機就可以了。

上面,手機就是父類,手機功能就是介面,某東就是工廠方法,華為等品牌就是引數,華為手機等就是子類例項。

關鍵:乙個父類,乙個工廠,多個子類。

2、抽象工廠

client呼叫一組父類介面(配套使用),但是需要根據不同的引數,獲得對應的一組子類例項。

例如:client是乙個室內設計師,他的客戶可能會要求使用的家電是同一品牌。但client其實是不用管用的是什麼牌子的,

他只需要設計電視應該放在哪,冰箱應該放在哪。在設計好之後,再到不同品牌的**取貨就行了。

這裡,各種家電就是一組父類。**就是抽象工廠,具體品牌**就是工廠例項。(可以給各個抽象工廠建乙個工廠方法)

關鍵:n組父類,n個工廠,n*m個子類,配套使用。

3、構建者

client呼叫父類提供的介面,但是根據不同引數,不僅獲得不同子類,同時調整子類的生成方式,進而影響子類的表現。

例如:client還是乙個智慧型手機測評人,但是更出名,要求也更高,他希望獲對手機有一些改動,例如root,統一使用原生系統等。

這時業務比較複雜,client需要乙個助理(director),用來獲得client所需要的各種手機。但助理不會root,也不會刷機,

所以需要每個品牌廠家派乙個builder來處理這些問題。

相比工廠方法,這裡多了乙個director,而工廠類也被各種型別builder代替。構建者會影響子類的生成。client只需要和director打交道。

關鍵:乙個子類乙個builder,引數影響子類例項化。

總結:以工廠方法為基礎。構建者多了乙個功能,它影響了子類的例項化,也因此多了乙個director,並用多個builder替換了factory。

抽象工廠相當於有多個工廠方法,所以需要乙個抽象工廠來提供統一介面。不同工廠提供的一組產品使用方式一樣,但可能需要配套使用。

從讀者角度來看Blog

最近經常在看各種blog文章,覺得受益匪淺,也剛剛在這裡安了家,覺得很不錯,但是現在的blog似乎在功能上都趨於一致,就是各種blog的skin是經常變化的,也越來越漂亮,但是困擾讀者的東西也就出來了。舉個例子,比如我們看書的時候,如果書的風格 格式 結構都類似的話,即使看不同的書,看起來也很方便,...

從原始碼角度來看UVM phase

說到uvm phase我們就知道是uvm乙個很重要的特性,從使用者角度來講,其實就是一些很簡單的應用規則,能夠極大地提公升編碼的效率,簡化 複雜度,提高debug的效率。至於應用可以參看zhangqiang大佬的第五章,這裡就不再贅述。本文就從原始碼的角度來看,uvm的phase是怎麼工作的?之前學...

4 工廠方式建立

我們還需要考慮一件事情,在我們環境我們一般有三個環境,一般都是測試環境,開發環境,生產環境 這三個環境我們在config裡面設定。因為抽取了就應該在固定的位置編寫 我們class乙個數我這邊定義development,把配置環境config交到裡面,現在還不知道怎麼寫我們就pass停止,後面的測試和...