策略模式(Strategy Pattern)(二):HeadFirst中鸭子的实现

本文介绍了如何使用策略模式在Java中实现鸭子模拟,详细讲解了问题描述、类图设计、代码实现及所体现的设计原则,如封装变化、多用组合和针对接口编程。内容涉及鸭子超类、飞行和叫声行为接口,以及具体鸭子种类的实现。
摘要由CSDN通过智能技术生成

一、问题描述


joe上班的公司做了一套成功的模拟鸭子的游戏:SimUDuck,游戏中会出现各种鸭子,一边游泳,一边呱呱叫,由于公司竞争压力加剧,必须重新设计鸭子(Duck)类,要求是:便于产生新的鸭子对象,可为鸭子添加新的行为,易于维护,动态设置行为。



二、类图



说明:

1.对各种鸭子的解释:

    RedHeadDuck:红头鸭,可以用翅膀飞,呱呱叫。

    RubberDuck:橡皮鸭,不会飞,吱吱叫。

    ModelDuck:模型鸭,不会飞,呱呱叫。

    DecoyDuck:诱饵鸭,不会飞,不会叫。

    MallardDuck:野鸭,会用翅膀飞,呱呱叫。


2.Duck是各种鸭子的抽象超类,其内部持有FlyBehavior和QuackBehavior接口类型的引用,因为飞行行为和呱呱叫行为随鸭子的不用而不同,是变化的部分,所以将它们取出并“封装”起来,好让其他部分不会受到影响。

       使用FlyBehavior和QuackBehavior接口类型便于以后增加新的飞行行为或呱呱叫行为,不会影响到既有的行为类,也不会影响使用行为的鸭子类。同样,这也可以让飞行行为和呱呱叫行为被其他对象复用,因为这些行为已经与鸭子类无关了,你也可以将其用在鸡和大鹅身上。


3.对飞行行为的解释:

    FlyWithWings用翅膀飞。

    FlyNoWay:不会飞。

    FlyRocket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值