設計模式使用手冊

2022-03-05 22:11:26 字數 1748 閱讀 6116

名稱

定義

變化點

我的實踐總結

策略模式

定義了演算法族,分別封裝起來,讓它們之間可以互換,讓演算法的變化獨立於使用演算法的客戶。

演算法,行為變化

觀察者模式

定義了物件之間的一對多依賴,這樣一來,當乙個物件改變狀態是,它所有的依賴者都會接收到通知並自動更新。

訊息接收者變化

可以很好的解耦接收者和觀察者,不必過多的考慮都有哪些部分要被通知到,即解耦了,也可以讓sender,的**更加內聚,不必增加多餘的職責。

裝飾者模式

動態的將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

注意變化點,需要動態的為物件附加職責。職責,行為變化

工廠方法模式

定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個,工廠方法讓類吧例項化推遲到子類。

需要建立的型別變化。

抽象工廠模式

提供乙個介面,用於建立相關或依賴物件的家族,而不需要指定具體類。

型別族變化。

單件模式

確保乙個類只有乙個例項,並提供乙個全域性訪問點。

類的數量變化

命令模式

將"請求"封裝成物件,以便使用不同的請求,佇列或者日誌來引數化其他物件,命令模式也支援可撤銷的操作。

動作的執行者是變化點。

介面卡模式

將乙個類的介面,轉換成客戶期望的另乙個介面,介面卡讓原本介面不相容的類可以合作的不間。

變化點是客戶介面和被適配介面的不一致,且這個不一致是變化點。

外觀模式

提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。

使客戶和複雜多變的子系統解耦

模板方法模式

在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。

變化的是演算法結構中的部分步驟。

需要注意的是,模板方法有很多中變體,而且實現的時候,如果是必須由子類實現的,那麼實現為抽象類,如果是可由子類選擇實現的,那麼實現為鉤子,給出基本的實現,子類可以覆蓋。

組合模式

允許你將物件組合成樹形結構來表現"整體/部分"層次結構,組合能讓客戶以一致的方式處理個別物件以及物件組合。

變化的主體是個別物件,或者是物件組合。無論涉及到多少個物件,處理的方式都是一樣的。

狀態模式

允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。

變化的主體是物件的行為,這樣的一組行為,和物件的狀態對應。

裝飾者:擴充套件包裝的物件。

介面卡:

行為的轉換。

外觀模式:簡化介面

好萊塢原則:別呼叫我們,我們會呼叫你。

依賴倒置原則:要依賴抽象,不要依賴具體類。

這裡要說明的是,由於高層需要呼叫底層的元件,而高層並不知道底層什麼時候會發生改變,為了讓系統更具靈活性,高層依賴於抽象。

而具體類也依賴於抽象,實現高層和底層的依賴分離。所謂的倒置就是高層依賴底層,倒置為,高層,底層依賴於抽象。

state machine      vs      strategy  partern

strategy : 行為的變化

state machine : 物件本身狀態的變化,並且影響行為的表現。

CVS使用手冊

注意 第一次匯出以後,就不是通過cvs checkout來同步檔案了,而是要進入剛才cvs checkout project name匯出的project name目錄下進行具體檔案的版本同步 新增,修改,刪除 操作。cvs的許可權管理分2種策略 基於系統檔案許可權的系統使用者管理 適合多個在lin...

sed使用手冊

原貼 http blog.chinaunix.net u 23204 showart 305602.html sed使用手冊 原創 在sed語句,正規表示式必須封閉在 中間。如 d,刪除空行。sed位址 在sed位址管理中,預設是對全域性進行操作,同時位址可以分為行位址和模式位址。如1,10d 12...

vi 使用手冊

進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔案,並將游標置於第n行首 vi filename 開啟檔案,並將游標置於最後一行首 vi pattern filename 開啟檔案,並將游標置於第乙個與pattern匹配的串處 vi r...