设计模式(策略模式)
2017-10-24 12:34
204 查看
妈妈有3个孩子一个叫小明一个叫小芳,一个叫小红,有一天妈妈要求他们去买东西
首先定义一个接口
这是一个通用的买东西接口
看看实现类小芳继承IStrategy
看看实现类小明继承IStrategy
看看实现类小红继承IStrategy
再看看通用的调用类
再看看测试方法
输出
小芳买了个玩具
小明买了个棒槌
小明买了个棒槌
首先定义一个接口
package 策略模式; public interface IStrategy { //这是一个买东西方法 public void operate(); }
这是一个通用的买东西接口
package 策略模式; public interface IStrategy { //这是一个买东西方法 public void operate(); }
看看实现类小芳继承IStrategy
package 策略模式; public class xiaofang implements IStrategy{ @Override public void operate() { System.out.println("小芳买了个玩具"); } }
看看实现类小明继承IStrategy
package 策略模式; public class xiaoming implements IStrategy{ //继承买东西的方法 @Override public void operate() { System.out.println("小明买了个棒槌"); } }
看看实现类小红继承IStrategy
package 策略模式; public class xiaohong implements IStrategy{ //继承买东西的方法 @Override public void operate() { System.out.println("小红买了个棒棒糖"); } }
再看看通用的调用类
package 策略模式; public class Context { //构造函数,小明,小芳,小红买东西时候通用调用, //IStrategy定义一个变量,因为小明,小芳,小红都实现了IStrategy类 //那么就可以把小明,小芳,小红对象传递到构造参数中 private IStrategy straegy; public Context(IStrategy strategy){ this.straegy = strategy; } //买东西了 public void operate(){ this.straegy.operate(); } }
再看看测试方法
package 策略模式; public class Test { public static void main(String[] args) { //原始调用方法 /* IStrategy IStrategy=new xiaofang(); xiaofang.operate(); 这样方法是不是很不舒服总是要实例化自己才能调用 那么有了下面这个类再看我将小明作为对象传递到通用的Context构造方法中让Context去实例化是不是就灵活多了 */ //小芳买东西 IStrategy IStrategy=new xiaofang(); Context context=new Context(IStrategy); context.operate(); //小明买东西 IStrategy IStrategy1=new xiaoming(); Context Context1=new Context(IStrategy1); Context1.operate(); //小红买东西 IStrategy IStrategy2=new xiaoming(); Context Context2=new Context(IStrategy2); Context2.operate(); } }
输出
小芳买了个玩具
小明买了个棒槌
小明买了个棒槌
相关文章推荐
- 设计模式(二)--策略模式
- 设计模式之策略模式,strategy
- 设计模式之策略模式
- 设计模式C++实现二 ——策略模式
- Java设计模式-策略设计模式
- 设计模式--策略模式
- 设计模式之---策略模式
- Android设计模式系列(11)--SDK源码之策略模式
- 策略设计模式
- Java设计模式之策略模式
- 研磨设计模式之 策略模式-4
- Java设计模式菜鸟系列(一)策略模式建模与实现
- C++设计模式一--StrategyPattern(策略模式)
- JAVA设计模式笔记之策略模式
- 码农小汪-设计模式之-策略模式
- Java设计模式之 —— 策略(Strategy)
- 设计模式-策略模式
- 设计模式-模板方法模式 策略模式
- java 设计模式 策略模式 以英雄联盟为背景
- 设计模式_策略模式