簡介:
1 template method是乙個演算法的抽象定義,逐步定義該演算法。,每步調用乙個抽象操作或乙個原語操作。子類實現演算法
2 interpreter:將乙個文法作為乙個類層次,實現乙個直譯器作為這些類的實力上的乙個操作
3 mediator 將物件間的互動,由多對多變為一對多,同時物件間松耦合
4 責任鏈提供更鬆的耦合。通過一條候選物件鏈隱式的向乙個物件傳送請求。
5 observer模式定義並保持物件間的依賴關係
6 strategy將演算法封裝到物件中,方便指定和改變乙個物件所使用的演算法
7 command將乙個請求封裝在物件中,可以作為引數,或者儲存在歷史列表
8 state是將乙個物件的狀態封裝,當狀態變化時可改變行為
9 visitor封裝分布於多個類之間的行為
10 iterator:抽象了訪問和遍歷乙個集合中的物件的方式
11 memento
行為模式討論:
1 封裝變化:
當乙個程式的某些方面的特徵經常變化時,這些模式就定義封裝這個方面的物件
當程式其他方面依賴於這個方面時,都可以與此物件協作。
這些 模式通常定義乙個抽象類來描述這些封裝變化的物件,根絕該模式依據這個物件命名。
.strategy封裝乙個演算法
.state封裝乙個與狀態相關的行為
.mediator封裝物件間的協議
.iterator物件封裝訪問和遍歷乙個狙擊物件中的各個構建的方法。
封裝該方面特徵的物件 和 使用這些新物件的已有物件。否則,會變成已有物件難以分割的一部分。
2 物件作為引數:
visitor物件是乙個多台的accept的引數,這個操作作用於visitor訪問的物件。
作為令牌到處傳遞的物件:command和memento,前者代表乙個請求,後者代表某個物件在特定時刻的內部狀態。
command的多型很重要,執行command是乙個多型的操作。memento介面非常小,備忘錄只能作為乙個值傳遞。不能給客戶提供多型操作。
3 通訊應該被封裝還是被分布:
observer和mediator是競爭的模式。
observer通過引入observer和subject來分布通訊。mediator則封裝成了其他物件間的通訊。
不存在封裝乙個約束的單個物件,必須由observer和subject相互協作來維護這個約束。
c++mediator更好用
4 對傳送者和接收者解耦:
command物件定義乙個傳送者和接收者之間的繫結關係
observer將observer與subject解耦,subject更新介面update通知observer
mediator:將各個colleague的相互引用解耦,各個colleague只能通過mediator交談。
職責鏈:通過沿著乙個潛在的接收者鏈來產地請求,將傳送者與接收者解耦
mediator和職責鏈 都要有分發策略,會影響型別安全。
5總結:
除了少數模式,各個模式之間是相互補充的和加強的關係。乙個職責鏈至少包含乙個template method模式的應用。
模板方法可用原語操作確定物件是否應該處理該請求並選擇應**的物件
職責鏈可以使用command模式將請求表示為物件。
interpreter使用state模式定義語法分析樹上下文
迭代器遍歷乙個聚合
visitor對它的每乙個元素進行操作
行為型模式總結
行為型模式 行為型模式用於描述程式在執行時複雜的流程控制,即描述多個類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,它涉及演算法與物件間職責的分配。在軟體工程 中,行為型模式為設計模 式的一種型別,用來識別物件之間的常用交流模式並加以實現。如此,可在進行這些交流活動時增強彈性。行為型模...
行為型模式總結
行為型模式總結 行為型模式用於描述程式在執行時複雜的流程控制,即描述多個類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,它涉及演算法與物件間職責的分配。行為型模式一共有11種 模板方法模式 template method 策略模式 strategy 命令模式 command 中介者模式...
設計模式 行為型模式總結
什麼是行為型模式 行為型模式 行為型模式涉及到演算法和物件間職責的分配。它不僅描述物件或者類的模式,還描述它們之間的通訊模式。這些設計模式刻畫了在執行難以跟蹤的複雜的控制流。它們將你的注意力從控制流轉移到物件之間的 上來。分類 行為物件模式 封裝物件 封裝變化是很多設計模式的主題,當乙個程式的某個方...