策略模式

策略模式在JAVA中体现出了组合优于集成的特点。

相比于在继承中写入固定的算法,策略模式提供了一种更加富有弹性的注入方法,这一特性依赖于JAVA多态的特性。

具体用例子就知道了

Class Duck()

{

  fly(){...}

}

比如我们有一个Duck类,现在有个WildDuck类继承自duck类,实现了自己的fly方法,然后有个CityDuck类也继承了Duck,但是CityDuck和WildDuck的fly实现是完全一样的,所以这个fly方法其实是可以避免重复的,如果你觉得写两个重复的方法也并不是很费时的话,那想想如果Duck类还有个walk()方法,然后又有三个子类的walk方法是一样的,怎么办呢,再重复三遍同样的代码吗,这样越到后面就会越让人觉得难以接受。

所以怎么做呢,策略模式给了我们一个很好的方案。

即我们增加一个fly接口

interface FlyBehavior()

{

  fly();

}

我们对Duck类进行改造

class Duck implements FlyBehavior

{

  FlyBehavior flyBehavior;

  public Duck(FlyBehavior  flyBehavior)

  {

    this.flyBehavior =flyBehavior;

  }

}

这样我们就将FlyBehavior这个动作抽象出来并注入到Duck类种,此时我们我们再联系之前的场景,就可以将具体的FlyBehavior实现类传入到WilldDuck类和CityDuck类种,他们将调用FlyBehavior的具体实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值