java设计模式之-策略模式

优、缺点

  优点:
    1、可以动态的改变对象的行为
  缺点:
    1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类

    2、策略模式将造成产生很多策略类


将变化的东西定义成一个接口(针对接口编程),有多少中策略就有多少个实现类(这也是上面缺点2的原因),然后在需要用到该变化东西的类里面定义该成员变量即可引入(组合),自行使用相应的实现策略。

下面举例说明

每种动物都有不同的叫声,动物的叫声是变化的,所以可以使用策略模式

首先定义策略接口(BleatBehavior


//叫声类

public interface BleatBehavior{

    public void bleat();

}

狗叫和猫叫分别实现BleatBehavior

//狗叫类

public class BarkBehavior implements BleatBehavior{

    public void bleat(){

        System.out.println("汪汪");

    }

}


//猫叫类

public class MiaowBehavior implements BleatBehavior{

    public void bleat(){

        System.out.println("喵喵");

    }

}

//动物类

public class Animal {
    public BleatBehavior bleatBehavior;
    //动态设置动物怎么叫
    public void setBleatBehavior(BleatBehavior bleatBehavior) {
        this.bleatBehavior = bleatBehavior;
    }

    public void performBark() {
        bleatBehavior.bleat();
    }
    

}

//狗类

public class Dog extends Animal{
   

}

//测试类

public class Test {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.setBleatBehavior(new BarkBehavior());
        dog.performBark();
    }
}





猜你喜欢

转载自blog.csdn.net/h702109382/article/details/80863230