【簡單工廠、工廠方法、抽象工廠、Builder模式的區別】
No1:
核心定義:
1)簡單工廠模式:一個工廠方法創建不同類型的對象
2)工廠方法模式:一個具體的工廠類負責創建一個具體對象類型
3)抽象工廠模式:一個具體的工廠類負責創建一系列相關的對象
4)Builder模式:對象的構建與表示分離,它更注重對象的創建過程
No2:
工廠方法模式與簡單工廠的區別主要有兩點:
1)工廠方法需要定義抽象工廠類或者接口
2)具體的對象由具體的工廠類來創建,並且每個工廠只創建一類對象
No3:
抽象工廠和工廠方法的區別:
抽象工廠實際上就是工廠方法的升級版,它的一個工廠類能夠生產多個不同類型的、相關聯或者相互依賴的對象
No4:
抽象工廠與簡單工廠的區別:
簡單工廠通過一個靜態函數創建不同類型的對象,而抽象工廠通過工廠子類的多個函數創建多個不同類型的對象
No5:
三個工廠模式和Builder模式的區別:
幾個工廠模式側重的是對象的創建,而Builder模式則是側重對象的構建過程,通過Director與Builder的協作將對象的各個部分組裝起來
【代理與裝飾模式、橋接模式】
No6:
代理模式:為其他對象提供一種代理以控制對這個對象的訪問
裝飾模式:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比生成子類更為靈活
橋接模式:將抽象和實現解耦,使得兩者可以獨立地變化
No7:
裝飾模式與代理模式的共同點都是增強功能,但是代理的特點是添加邏輯控制,而裝飾則是動態地添加功能。
【外觀模式與中介模式】
No8:
外觀模式:要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。外觀模式提供一個高層次的接口,使得子系統更易於使用
中介模式:用一個中介對象封裝一系列的對象交互,中介者使各對象不需要顯示地相互作用,從而使其耦合松散,而且可以獨立地改變它們之間的交互
【策略與狀態模式、命令模式】
No9:
策略模式:定義一組算法,將每個算法都封裝起來,並且使它們之間可以互換
狀態模式:當一個對象內在狀態改變時允許其改變行為,這個對象看起來像改變了其類
命令模式:將一個請求封裝成一個對象,從而讓你使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日志,可以提供命令的撤銷和恢復功能
No10:
命令模式在行為上與策略模式優點類似,策略模式關注的是算法替換的問題,用一個新的算法替換舊算法,或者提供多種算法由調用者選擇,算法的自由更替是它實現的重點。而命令模式則關注的是解耦問題,如何讓請求者和執行者解耦是它需要首先解決的,解耦的要求就是把請求的內容封裝成一個一個的命令,由接收者執行,由於封裝成了命令,就同時可以對命令進行多種處理,例如撤銷、記錄等。