一起学设计模式-策略模式
生活随笔
收集整理的這篇文章主要介紹了
一起学设计模式-策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、模式介紹
? ? ? ?策略模式(Strategy Pattern):定義一系列算法,將每一個算法封裝起來,并讓它們可以相互替換。
? ? ? ?策略模式讓算法獨立于使用它的客戶而變化,也稱為政策模式(Policy)。
? ? ? ?策略模式是一種對象行為型模式。
二、模式結構
三、模式代碼
? ? 1、抽象策略接口
package com.example.demo.strategy; //策略接口 public interface Strategy {public String doScheme(String name,String scheme); }? ? 2、具體策略美人計
package com.example.demo.strategy;//美人計 public class Beauty implements Strategy{@Overridepublic String doScheme(String name,String scheme) {String all = scheme+" "+"eg:"+name;return "美人計:" + all;} }? ? 3、具體策略苦肉計
package com.example.demo.strategy;//苦肉計 public class BitterMeat implements Strategy{@Overridepublic String doScheme(String name,String scheme) {String all = scheme+" "+"eg:"+name;return "苦肉計:" + all;} }? ? 4、具體策略空城計
package com.example.demo.strategy;//空城計 public class EmptyCity implements Strategy{public String doScheme(String name,String scheme) {String all = scheme+" "+"eg:"+name;return "空城計:" + all;} }? ? 5、創建上下文
package com.example.demo.strategy;//上下文 public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy = strategy;}public String executeStrategy(String name,String scheme){return strategy.doScheme(name, scheme);} }? ? 6、 模擬調用各策略
package com.example.demo.strategy;//調用策略 public class Main {public static void main(String[] args) {Context context = new Context(new EmptyCity());System.out.println(context.executeStrategy("諸葛亮","虛而示虛的疑兵之計,是一種疑中生疑的心理戰,多用于己弱而敵強的情況。"));context = new Context(new BitterMeat());System.out.println(context.executeStrategy("三十六計","自己傷害自己,以蒙騙他人,從而達到預先設計好的目標。"));context = new Context(new Beauty());System.out.println(context.executeStrategy("王允,貂蟬之義父","它是利用色情、出賣肉體的方法,以女性勾引男性對象,以男性勾引女性對象,進行間諜情報活動。"));} }? ? 7、打印結果
四、使用情景
? ? 完成一項任務,往往可以有多種不同的方式,每一種方式稱為一個策略,我們可以根據環境或者條件的不同選擇不同的策略來完成該項任務。
? ??1、諸葛亮的錦囊妙計,每一個錦囊就是一個策略。
? ? 2、旅行的出游方式,選擇騎自行車、坐汽車,每一種旅行方式都是一個策略。
? ? 3、登錄認證,現在需要登錄linux、Windows、mac、認證數據庫。每種認證方式可以封裝一個策略。
五、優缺點
優點: 1、算法可以自由切換。 2、避免使用多重條件判斷。 3、擴展性良好。
缺點: 1、客戶端必須知道所有策略類,并自行決定使用哪一種策略類。2、如果算法較多,則會造成很多的策略類。
六、demo地址
https://github.com/tongyuxin1/designModel/tree/master/src/main/java/com/example/demo
總結
以上是生活随笔為你收集整理的一起学设计模式-策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layui select下拉框改变之 c
- 下一篇: 一起学设计模式-观察者模式