設計模式 行為型 策略模式

2021-08-27 05:26:59 字數 1107 閱讀 6641

更好的實現開閉原則(ocp, openclosedprinciple),即對於擴充套件是開放的,對於修改是關閉的,不修改原有**,只擴充套件**。

策略模式包括三個角色:

-context(環境類):使用演算法策略,維持乙個抽象策略類的引用例項;

-strategy(抽象策略類):將所有的策略抽象出來,在該類宣告抽象方法或者介面,是所有策略的父類;

-concretestrategy(具體策略類):實現了抽象策略類的方法;

以下舉個簡單例子,場景是**當中不同的客戶享受的商品的折扣不同:

1.strategy(抽象策略類):

public

abstract

class

countstrategy

2.concretestrategy(具體策略類)

(1)策略1:vip的**策略:打8折

public

class

vipcount

extends

countstrategy

}

(2)策略2:超級vip的**策略:打75折

public

class

svipcount

extends

countstrategy

}

3.context(環境類)

public

class context

public

double

getprice(double price)

}

4.客戶端呼叫(測試):

public

class strategytest

}

執行結果:

vip的**是:80.0

超級vip的**是:75.0

最近剛開始看設計模式,以上見解只是個人的一點皮毛看法,若是有什麼不當之處,忘指出!

Java設計模式 行為型 策略模式

在狀態模式下,我們每個人都知道自己會做什麼,應當做什麼,事情本事是固定的,只是根據當前狀態的改變而去選擇不同的事情去做,狀態本身可能會隨著時間的推移不斷的增加或減少。在策略模式下,我們每個人不知道自己會做什麼,應當做什麼,不論什麼事情當需要去做的時候就去完成它,事情本身可能是千變萬化的。生活中的每個...

行為型設計模式之 策略模式

緊接著上面的模板方法設計模式,當使用者支付時,其實使用者是有優惠活動可以享受的,但是每個使用者的具體情況不同,所選擇的優惠活動是不一樣的,有滿減活動 首次購活動 新會員活動,等等一系列優惠。為了避免一系列的if else的書寫,我們使用策略模式進行優化 首先是打折的抽象介面 public inte ...

策略模式(行為型)

思考問題 乙個書店的某類書是免費的,某類書是固定1元的,某類書是按折扣算的 比如88 同一類別的書本 一樣 假定顧客只買一類書,在設計書店bookstore類時應該如何計算顧客買書的費用?解答 1.你有可能不知道如何設計,畢竟上面的計算規則不一樣 並不是一類書8折另一類書9折那樣好計算 2.既然這樣...