華爲面試系列:設計模式

1.簡單工廠方法和工廠方法的區別

C++設計模式之1-工廠模式

簡單工廠方法,使用一個工廠類實現創建接口,不符合開放封閉原則,因爲如果新增一個產品品類,需要修改工廠類的修改方法。

工廠方法在簡單工廠方法的基礎上,添加一個抽象工廠類,抽象工廠類提供創建產品接口,每個子類根據需要實現創建產品接口,這樣創建產品的工作在子類上,如果新增一個品類,添加一個工廠實現類負責該品類的創建。每個工廠子類負責一個品類的創建,不需要修改現有的代碼。

2.代碼:一個汽車工廠 實現一個工廠模式

 

3.平時項目中有遇到過內存泄漏麼?知不知道用什麼設計模式來避免這個問題

Prototype模式的用途

場景1:遊戲場景中有很多類似的敵人,它們的技能都一樣,但是隨着敵人出現的位置和不同,它們的能力也不太一樣。那麼,可以創建一個敵人抽象類,然後對於不同能力的步兵創建不同的子類。然後,使用工廠模式讓調用方依賴敵人抽象類。問題來了,如果有無數種能力不同的步兵,難道需要創建無數子類嗎?還有步兵模式的初始化工作比較耗時,創建這麼多步兵對象可能會浪費更多的時間。我們是不是隻創建一個步兵模式,然後複製出更多的一模一樣的步兵呢?複製後,只需要調整一下這些對象在地圖出現的位置,或者調整一下他們的能力及其他特性即可。原型模式可以用來解決這類問題的。

場景2:在商品房銷售系統中,房屋信息是基礎信息。在系統運行前必須輸入房屋的各種信息到系統中,這是一項枯燥的重複勞動。如果讓用戶重複輸入房間的類型、面積和衛生間樣式,這個系統肯定尚未運行就夭折了。實際上,一個小區樓盤的樣式並不多,不同的只是樓號。另外,樓盤中的房間類型也非常有限,從而爲解決輸入問題提供了啓示。所以我們可以事先創建一個樓盤模型,然後複製出更多的樓盤模型。複製後,只需要調整一下樓號等信息即可。原型模式也可以用來解決這類問題。

設計模式之 原型(Prototype)模式(使用智能指針避免淺拷貝時內存泄露)

設計模式:工廠和原型(清晰明瞭的對比)

C++ 之 觀察者模式

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章