admin管理员组文章数量:1794759
策略模式(Strategy)
文章目录
- 策略模式(Strategy Pattern)
- 策略模式的定义
- 策略模式的意义
- 策略模式的组成
- 策略模式的实现
- 策略模式的编写步骤
- 策略模式简单应用
- 第一步我们先对策略对象定义一个公共接口
- 编写策略类实现上面的接口
- 加法策略类AddStrategy
- 减法策略类SubtractStrategy
- 乘法策略类MultiplyStrategy
- 除法策略类DivideStrategy
- 在使用策略对象的类中保存一个对策略对象的引用
- 在使用策略对象的类中,实现对策略对象的set和get方法(注入)或者使用构造方法完成赋值。
- 创建一个使用类
- 策略模式的缺点
- 解决方案
collectiongs其实就是策略模式,他其中有很多的静态方法供大家使用。 现在我们自己用策略模式来实现加减乘除 首先我们创建一个包,然后在包里创建几个类。
第一步我们先对策略对象定义一个公共接口就是Strategy.java接口
package fiftyFirst; public interface Strategy { public int calculate(int a , int b); } 编写策略类实现上面的接口 加法策略类AddStrategy public class AddStrategy implements Strategy { @Override public int calculate(int a, int b) { // TODO 自动生成的方法存根 return a + b; } } 减法策略类SubtractStrategy public class SubtractStrategy implements Strategy { @Override public int calculate(int a, int b) { // TODO 自动生成的方法存根 return a - b; } } 乘法策略类MultiplyStrategy public class MultiplyStrategy implements Strategy { @Override public int calculate(int a, int b) { // TODO 自动生成的方法存根 return a * b; } } 除法策略类DivideStrategy public class DivideStrategy implements Strategy { @Override public int calculate(int a, int b) { // TODO 自动生成的方法存根 return a / b; } } 在使用策略对象的类中保存一个对策略对象的引用创建Evironment.java类
public class Environment { private Strategy strategy; public int calculate(int a, int b) { return strategy.calculate(a, b); } } 在使用策略对象的类中,实现对策略对象的set和get方法(注入)或者使用构造方法完成赋值。完善Evironment.java
public class Environment { private Strategy strategy; public Environment(Strategy strategy) { this.strategy = strategy; } public Strategy getStrategy() { return strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public int calculate(int a, int b) { return strategy.calculate(a, b); } } 创建一个使用类创建Client.java
public class Client { public static void main(String[] args) { AddStrategy addStrategy = new AddStrategy(); Environment environment = new Environment(addStrategy); System.out.println(environment.calculate(3, 4)); SubtractStrategy subtractStrategy = new SubtractStrategy(); environment.setStrategy(subtractStrategy); System.out.println(environment.calculate(3, 4)); MultiplyStrategy multiplyStrategy = new MultiplyStrategy(); environment.setStrategy(multiplyStrategy); System.out.println(environment.calculate(3, 4)); DivideStrategy divideStrategy = new DivideStrategy(); environment.setStrategy(divideStrategy); System.out.println(environment.calculate(3, 4)); } }结果是: 7 -1 12 0
策略模式的缺点== 采用工厂方法==
版权声明:本文标题:策略模式(Strategy) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686592698a85434.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论