1. 程式人生 > >java 設計模式-策略模式

java 設計模式-策略模式

12c str state app cts adf tro data- baidu

概念

將每一種算法都封裝到具有共同接口的獨立類中,從而使他們可以相互替換

特點
功能特點:
算法在不影響客戶端運行的情況下發生變化,從而改變不同功能(不同算法邏輯)。

設計特點:
1封裝變化的部分
2針對接口編碼,不針對具體實現編碼

角色組成

1 抽象策略角色(A):接口或者抽象類,內含策略方法(算法)
2 具體策略角色:繼承或者實現A,並實現策略方法(算法)
3 環境角色:持有一個策略類的引用

案例

實現加減乘除功能

1、定義抽象策略角色

技術分享圖片

定義抽象策略角色

2、定義具體策略角色(本例子僅僅演示,只是定義加、減兩種具體策略)

加法策略:

技術分享圖片

減法策略:

技術分享圖片

3、環境角色

技術分享圖片

4、測試類

技術分享圖片

如果需要改變策略為減法

environment.setStategy(new SubtractStratety);

result = environment.calulate(20,30);

System.out.println(result);

end

java 設計模式-策略模式