首页 » 技术分享 » java设计模式之-策略模式

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();
    }
}

转载自原文链接, 如需删除请联系管理员。

原文链接:java设计模式之-策略模式,转载请注明来源!

0