设计模式学习笔记--策略模式
2016-12-09 17:20
435 查看
二十三、策略模式
策略模式(Strategy Pattern),可以使得一个类的行为或算法,在运行时进行更改。有点类似状态模式,需要创建表示各种策略的对象,以及一个行为随着策略而变化的context对象,通过策略对象的改变,来改变执行对象的行为算法。
简介
定义一系列的算法,并封装起来作为策略,可相互替换。- 优点:算法可以自由切换,避免使用多重条件判断,扩展性好。
- 缺点:策略类较多,且需要对外公开。
若是策略类真的多了,可以使用混合模式,不要局限于单一的设计模式。
实现
定义一个活动的Strategy接口和它的实现类,以及
Context,使用了某个策略的行为类。
- 创建接口
Strategy.java
public interface Strategy { public int doOperation(int num1,int num2); }
接口实现
OperationAdd.java
public class OperationAdd implements Strategy { @override public int doOperation(int num1,int num2){ return num1+num2; } } ```` `OperationSubstract.java` <div class="se-preview-section-delimiter"></div> ```java public class OperationSubstract implements Strategy{ @override public int doOperation(int num1,int num2){ return num1-num2; } }
OperationMultiply.java
public class OperationMultiply implements Strategy { @override public int doOperation(int num1,int num2){ return num1*num2; } }
创建行为类
Context.java
public class Context{ private Strategy strategy; public Context(Strategy strategy){ this.strategy = strategy; } public int executeStrategy(int num1,int num2){ return strategy.doOperation(num1,num2); } }
演示
StrategyPatternDemo.java
public class StrategyPatternDemo { public static void main(String[] args){ Context context = new Context(new OperationAdd()); System.out.println("10+5=" + context.executeStrategy(10,5)); context = new Context(new OperationSubstract()); System.out.println("10-5=" + context.executeStrategy(10,5)); context = new Context(new OperationMultiply()); System.out.println("10*5=" + context.executeStrategy(10,5)); } }
输出
10 + 5 = 15 10 - 5 = 5 10 * 5 = 50
相关文章推荐
- java 设计模式 学习笔记(4) 策略模式
- HeadFirst 设计模式学习笔记1--策略模式
- 设计模式学习笔记(六)之策略模式(Strategy)
- 设计模式学习笔记二:Strategy,策略模式
- 设计模式学习笔记之策略模式
- 设计模式学习笔记--Strategy 策略模式
- 设计模式学习笔记(5) - 策略模式
- 《Head First 设计模式》学习笔记:策略模式与观察者模式
- Head First_设计模式_学习笔记_第01章_策略模式
- 设计模式学习笔记(六)之策略模式(Strategy)
- 设计模式学习笔记二【策略模式】
- HeadFirst 设计模式学习笔记1--策略模式
- 二 策略模式——设计模式学习笔记
- java 设计模式学习笔记十五 strategy 策略设计模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式学习笔记(二):策略模式
- 学习笔记 ---- 设计模式之策略模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- 设计模式学习笔记-策略模式