
2008年1月23日
Strategy--定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。
參與者
Strategy
- -- 定義所有支持的算法的公共接口。Context使用這個接口來調用某ConcreteStrategy定義的算法。
ConcreteStrategy(具體策略)
- -- 以Strategy接口實現英雄模范具體算法。
Context(上下文)
- --用一個ConcreteStrategy對象來配置。
- --可定義一個接口來讓Strategy訪問它的數據。
適用性
- 當存在以下情況時使用Strategy模式
- 許多相關的類僅僅是行為有異。“策略”提供了一種用多個行為中的一個行為來配置一個類的方法。
- 需要使用一個算法的不同變體。
- 算法使用了客戶不應該知道的數據。可使用策略模式以避免暴露復雜的、與算法相關的數據結構。
posted @
2008-01-23 10:52 Sam Wang 閱讀(304) |
評論 (2) |
編輯 收藏

2008年1月22日
Composite模式描述了如何使用遞歸組合,使得用戶不必對這些類進行區別。

Composite的關鍵是一個抽象類,它既可以代表圖元,又可以你表圖元的容器。
參于者
Component
-
--在適當的情況下,實現所有類共有接口的缺省行為。
-
--聲明一個接口用于訪問和管理Composite的子組件。
-
--(可選)在遞歸結構中定義一個接口,用于訪問一個父部件,并在合適的情況下實現它。
Leaf
-
--在組合中表示葉節點對象,葉節點沒有子節點。
-
--在組合中定義圖元對象的行為。
Composite
-
--定義有子部件的那些部件的行為。
-
--存儲子部件
Client
-
--通過Component接口操縱組合部件的對象。
適用性
你想表示對象的部份-整體層次結構。
你希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。
posted @
2008-01-22 18:04 Sam Wang 閱讀(125) |
評論 (0) |
編輯 收藏