面試題總結6 設計模式

2021-10-03 19:22:40 字數 1031 閱讀 2074

六種常見的設計模式:1、工廠模式;2、單例模式;3、策略模式;4、觀察者模式;5、迭代器模式;6、模版方法模式。

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

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

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

簡單工廠方法,使用乙個工廠類實現建立介面,不符合開放封閉原則,因為如果新增乙個產品品類,需要修改工廠類的修改方法。

工廠方法在簡單工廠方法的基礎上,新增乙個抽象工廠類,抽象工廠類提供建立產品介面,每個子類根據需要實現建立產品介面,這樣建立產品的工作在子類上,如果新增乙個品類,新增乙個工廠實現類負責該品類的建立。每個工廠子類負責乙個品類的建立,不需要修改現有的**。

2.**:乙個汽車工廠實現乙個工廠模式

單例模式的多執行緒安全問題

c++ 之 觀察者模式

3.平時專案中有遇到過記憶體洩漏麼?知不知道用什麼設計模式來避免這個問題

prototype模式的用途

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

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

設計模式之 原型(prototype)模式(使用智慧型指標避免淺拷貝時記憶體洩露)

設計模式面試題

參考 常用的設計模式彙總,超詳細!這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小專案或者具體產品很少擴充套件的情況 這樣工廠類才不用經常更改 它由三種角色組成 來用類圖來清晰的表示下的它們之間的關係 抽象工廠模式 先來認識下什麼是產品族 位於不同產品等級結構中,功能相關聯的產品組成的家族...

面試題總結 設計模式 單例模式

單例模式的優缺點 在程式編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,餓漢式 在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。懶漢式 在類載入時不初始化,等到第一次被使用時才初始化。餓漢式 可用 public class singleton public static sin...

Java面試題 設計模式

單例模式 保證被建立一次,節省系統開銷。工廠模式 簡單工廠 抽象工廠 解耦 觀察者模式 定義了物件之間的一對多的依賴,這樣一來,當乙個物件改變時,它的所有的依賴者都會收到通知並 自動更新。外觀模式 提供乙個統一的介面,用來訪問子系統中的一群介面,外觀定義了乙個高層的介面,讓子系統更容易使 用。模版方...