代码复用,尽管他们都可以通过继承实现,但是我们为了在没有耦合需求的时候尽量不要使用继承,而是根据不同场景采用不同复用代码的方式。
- 如果只是共享接口,我们可以使用协议;
- 如果是希望共用一个方法的部分实现,但希望根据需要执行不同的其他行为,我们可以使用代理;
- 如果是添加方法,我们可以优先使用类别;
- 如果是为了使用一个类的很多方法,我们可以使用组合来实现。
总结
如果当初只是出于代码复用的目的而不区分类别和场景,就采用继承是不恰当的。当你发现你的继承超过2层的时候,你就要好好考虑是否这个继承的方案了,第三层继承正是滥用的开端。确定有必要之后,再进行更多层次的继承。我认同Casa的看法:万不得已不要用继承,优先考虑组合等方式。
网友评论