Java設計模式 3 策略

2021-05-02 08:30:03 字數 1254 閱讀 3672

strategy

英文簡單描述

intent

define a family of algorithms, encapsulate each one, and make them interchangeable.

strategy lets the algorithm change dynamically.

how to

strategy

declares an inte***ce common to all supported algorithms.

concretestrategy

implements the algorithm using the strategy inte***ce.

context

is configured with a concretestrategy object.

maintains a reference to a strategy object.

may define an inte***ce that lets strategy access its data.

known cases

linebreak

encrypt algorithm

uml

**實現:

委託和繼承:

策略是通過另乙個層次結構istrategy來實現不同演算法的,context將compute委託給策略類

也可以用另一種方法來實現context的compute的多樣化:即繼承context,對於不同的compute提供不同的子類

這就涉及到委託和繼承的選擇問題

委託比繼承靈活,可以動態配置,不會造成子類級數增長,另外可以通過物件的合成來實現多種功能(decorator)

繼承則相對不靈活,一旦選擇了子類後,不能動態配置

另外,委託是黑盒重用,繼承是白盒重用,應該多使用委託少用繼承

java 設計模式 策略模式

就是比較兩個類別時,要自己寫乙個比較器,這個比較器實現了 comparator介面,裡面實現public int compare object o1,object o2 方法。在實體類裡面要有乙個成員變數時這個比較器,這個實體類也要實現了 comparable介面。例如 cat有兩個屬性,heigh...

java設計模式 策略模式

策略模式 strategy pattern 體現了兩個非常基本的物件導向設計的原則 1 封裝變化的概念 2 程式設計中使用介面,而不是對介面的實現。策略模式定義了乙個共同的抽象演算法介面,其子類實現這個介面定義的方法,並且都有各自不同的實現,這些演算法實現可以在客戶端呼叫它們的時候互不影響的變化。子...

設計模式 java策略模式

相關的資料網上很多,我這裡自己總結一下。策略模式就是為了達到乙個目標,可以有多種方法 即多種策略 採用,為了減少類與類之間的耦合,所以採用如下措施 設定乙個介面,inte ce strategy,裡面有未實現的方法dothings strategya 繼承 strategy,strategyb 也繼...