策略模式

来源:互联网 发布:全自动打字赚钱软件 编辑:程序博客网 时间:2024/05/22 00:35

设计原则:

  • 封装变化
  • 多用组合,少用继承
  • 针对接口编程,不针对实现编程

策略模式

策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

public abstract class Duck{    FlyBehavior flyBehavior;//多用组合    public abstract void display();    public void performFly(){        flyBehavior.fly();    }    public void setFlyBehavior (FlyBehavior flyBehavior){        this.flyBehavior=flyBehavior;//动态修改FlyBehavior     }}interface FlyBehavior{    public void fly();//针对接口编程}class FlyWithWings implements FlyBehavior{    public void fly(){//针对接口编程        System.out.println("I'm flying with wings");    }}class NoFly implements FlyBehavior{    public void fly(){//针对接口编程        System.out.println("I'm can't fly");    }}

以Duck为例子,继承Duck例子之后可以通过设定不同的FlyBehavior 实现来赋予子类不同的行为。此处FlyBehavior就是算法族,FlyWithWings 是算法的一个具体实现。FlyBehavior的变化独立于Duck的实现。setFlyBehavior ()可以动态更改行为。


原创粉丝点击