设计模式——策略模式

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


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





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

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

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


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


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

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


最后设计:



你可能感兴趣的:(设计模式)