设计模式:策略模式-strategy
2017-01-11 09:44
573 查看
定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换。本模式是的算法可以独立于使用他的客户而变化
Context中的contextinterface实际是使用context类中的strategy的algorithminterface方法
优点:
strategy层定义了一个算法系列,供context随意替换 消除if else switch等语句
缺点:
客户需了解不同strategy的区别 增加了对象数目 增加了strategy和context之间的通信开销
代码
Mainpublic class Main { public static void main(String[] args) { Goaway goaway=new Goaway(); goaway.setMystStrategy(new Fly()); goaway.getWay(); } }
Goaway
public class Goaway { Strategy mystStrategy; public Strategy getMystStrategy() { return mystStrategy; } public void setMystStrategy(Strategy mystStrategy) { this.mystStrategy = mystStrategy; } public void getWay(){ if(mystStrategy!=null){ mystStrategy.getWay(); }else{ System.out.println("No way"); } } }
interface:Strategy
public interface Strategy { public void getWay(); }
imp:Drive
public class Drive implements Strategy { @Override public void getWay() { System.out.println("开车"); } }
imp:Fly
public class Fly implements Strategy { @Override public void getWay() { System.out.println("飞"); } }
imp:Walk
public class Walk implements Strategy { @Override public void getWay() { System.out.println("走路"); } }
相关文章推荐
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式(18)-策略模式(Strategy)
- 设计模式之Strategy(策略)
- 设计模式解析(第二版)笔记4 Strategy 策略模式
- 设计模式(三)[策略(Strategy)模式]
- 设计模式之Strategy(策略)
- 学习设计模式之旅 / 策略模式 (Strategy) 推荐
- 设计模式学习1——策略模式(Strategy)
- Java设计模式-----Strategy策略模式
- 设计模式之策略模式(Strategy)
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- Head First 设计模式 C++实现-Strategy(策略模式)
- Head First 设计模式 C++实现-Strategy(策略模式)
- 设计模式(20)-策略模式(Strategy)