java设计模式-Head First设计模式之策略模式
2016-09-21 18:58
302 查看
Head First设计模式之策略模式
1 定义
策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户
2 设计原则
1 找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要的变化的代码混合在一起; 2 针对接口编程,而不是针对实现编程; 3 多用组合,少用继承。
3 代码实现
1 飞行父类
package Strategy; public interface FlyBehavior { public void fly(); }
飞行的两个具体实现类
package Strategy; public class FlyNoWay implements FlyBehavior{ @Override public void fly() { // TODO Auto-generated method stub System.out.println("===我飞不起来==="); } }
package Strategy; public class FlyWithWings implements FlyBehavior{ @Override public void fly() { // TODO Auto-generated method stub System.out.println("===我能用翅膀飞==="); } }
2 叫的父类
package Strategy; public interface QuackBehavior { public void quack(); }
叫的实现类
package Strategy; public class Quack implements QuackBehavior{ @Override public void quack() { // TODO Auto-generated method stub System.out.println("====我也会呱呱叫===="); } }
package Strategy; public class Squeak implements QuackBehavior{ @Override public void quack() { // TODO Auto-generated method stub System.out.println("====我不会呱呱叫===="); } }
3 鸭子父类
package Strategy; public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public abstract void display(); public void performFly(){ flyBehavior.fly(); } public void performQuack(){ quackBehavior.quack(); } public void setFlyBehavior(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; } public void setQuackBehavior(QuackBehavior quackBehavior) { this.quackBehavior = quackBehavior; } }
鸭子的实现类
package Strategy; public class ModelDuck extends Duck{ public ModelDuck(){ flyBehavior=new FlyNoWay(); quackBehavior=new Squeak(); } @Override public void display() { // TODO Auto-generated method stub System.out.println("===我是一只模型鸭==="); } }
4 客户端
package Strategy; public class MimiDuckSimulator { public static void main(String args[]){ Duck model=new ModelDuck(); model.performFly(); model.performQuack(); System.out.println("------------------------"); model.setFlyBehavior(new FlyWithWings()); model.setQuackBehavior(new Quack()); model.performFly(); model.performQuack(); } }
相关文章推荐
- JAVA与设计模式--之STRATEGY策略模式
- java设计模式之策略模式
- Java设计模式——策略模式
- Java开发中的23种设计模式详解----策略模式(strategy)
- JAVA设计模式四策略模式
- Java设计模式透析--策略模式(一)
- Java 接口应用案例 (策略设计模式使用)
- java -设计模式-策略模式
- Java设计模式之策略模式
- JAVA设计模式之策略模式
- java设计模式---策略模式
- Java设计模式----策略模式
- java设计模式之——策略模式
- java设计模式之——策略模式
- Java设计模式----策略模式(Strategy)
- Java 设计模式情景分析——策略模式
- 学习笔记——JAVA设计模式<18>策略模式
- Java设计模式——策略模式
- 【Java设计模式】· 策略模式(Strategy Pattern)
- Java设计模式之策略模式