设计模式——策略模式

刚读的head first 设计模式,第一个就是策略模式,讲的有趣


以书上案例为例,我们要设计一群鸭子,这群鸭子有不同的行为表现,可以呱呱叫或吱吱叫,可以飞或游泳,最初版本设计如下:





但是这样的话,我们不能在父类加入fly的方法,因为那样会使不能fly的鸭子也继承fly的方法,并且有加入新的方法都会这么麻烦

接下来我们想到接口实现:

class duck
{
	display()
	swim()
}
//行为接口
flyable
{
	fly()
}
//叫声接口
queckable
{
	quack()
}


不同的鸭子实现不同的接口方法,但马上我们又遇到新的问题,重复的代码变多,duck的子类都要修改一下接口方法,我们解决了继承不是很合适的问题,但却造成代码无法复用,甚至遇到无法解决的鸭子飞行动作多种变化


那么如何优秀的解决这个问题?

“采用良好的oo软件设计原则”,在此问题中就是分开会变化和不会变化的部分,封装会变化的部分,以便以后改动此部分


最后设计:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值