即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

设计模式——策略模式

编程语言 qq_25934229 23℃ 0评论

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




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













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

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

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





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




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

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




最后设计:





转载请注明:CodingBlog » 设计模式——策略模式

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情