设计模式-策略模式

2018-08-14  本文已影响0人  右左君

设计模式-策略模式

策略模式

策略模式-对象行为型模式 :定义了一系列算法,并且将算法分别封装,它们之间可以相互替换。

策略模式使得算法与使用算法的客户独立,算法之间也相互独立,无依赖。

情景

模拟鸭子

code


public abstract class Duck {

    /**
     * 策略接口
     */
    FlyBehavior flyBehavior;



    public Duck(FlyBehavior flyBehavior){
        this.flyBehavior = flyBehavior;
    }
    
    public void swim(){
        System.out.println(" SWIM ");
    }
    
    public abstract void display();

    public void performFly(){
        flyBehavior.fly();
    }
    
     /**
     * dynamic set
     * @param flyBehavior
     */
    public void setFlyBehavior(FlyBehavior flyBehavior){
        this.flyBehavior = flyBehavior;
    }

}


/**
* fly behavior interface 
*/
public interface FlyBehavior {

    void fly();
}





public class FlyWithWings implements FlyBehavior{
    @Override
    public void fly() {
        System.out.println("i can fly with wings !");
    }
}


public class FlyNoWay implements FlyBehavior {
    @Override
    public void fly() {
        System.out.println("i can't fly!");
    }
}



public class MallardDuck extends Duck{

    public MallardDuck(){
    }

    @Override
    public void display() {
        System.out.println(" i am a mallard duck");
    }
}

    @Test
    public  void  test(){
        Duck duck = new MallardDuck(new FlyWithWings());
        duck.performFly();
        duck.setFlyBehavior(new FlyNoWay());
        duck.performFly();
    }
    
// result: 
//i can fly with wings !
//i can't fly!

优点

缺点

参考书目

上一篇 下一篇

猜你喜欢

热点阅读