JAVA設計模式 策略模式

2021-09-02 02:59:27 字數 1676 閱讀 1781

strategy模式

策略模式介紹:

有一組演算法(行為),這些演算法(行為)可以封裝到共同的介面中,呼叫者依賴共同的介面,從而當演算法被替換時,不影響呼叫者。

策略模式使用場景:

1.類之間的區別僅在餘行為,如:加減乘除操作

2.客戶端需要動態選擇演算法

策略模式和工廠方法的區別:

1.工廠方法返回的是物件

2.策略模式返回具體計算後的值

策略模式結構圖:

注意事項:

1.strategy本身並不決定在合適,使用那種策略,strategy只能提供演算法的封裝,以及透明的替換和移除演算法。

2.策略模式一般不用於巢狀。

1.半年內交易三次以上,在庫齡折扣的基礎上,7折銷售

2.一年內交易三次以上的,在庫齡折扣的基礎上,9折銷售

以上用裝飾模式解決

引入問題:

1.庫齡半個月以上的,每頓減5塊銷售

2.庫齡1個月以上的,8折銷售

3.半年內交易三次以上,在庫齡折扣的基礎上,7折銷售

4.一年內交易三次以上的,在庫齡折扣的基礎上,9折銷售

5.其餘沒有折扣

**設計:

/**

* 折扣計算介面

*/public inte***ce discountstrategy

/**

* 策略消費上下文,持有折扣計算介面

*/public class discountcontext

public bigdecimal executediscount()

}

/**

* 庫齡半個月的折扣

*/public class halfmonthdiscountstrategy implements discountstrategy

@override

public bigdecimal calculatediscount()

}

/**

* 沒有折扣

*/public class nodiscountstrategy implements discountstrategy

@override

public bigdecimal calculatediscount()

}

/**

* 乙個月的折扣

*/public class onemonthdiscountstrategy implements discountstrategy

@override

public bigdecimal calculatediscount()

}

public static void main(string args)

else if(day >= 15 && day <= 30) else

bigdecimal amount = context.executediscount();

}

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 也繼...