欢迎光临散文网 会员登陆 & 注册

【熟】代码美学:组合为何优于继承?

2023-09-09 14:10 作者:陈云Cyril  | 我要投稿

Prefer Composition Over Inheritance

这两件事是为了解决同一个问题——代码复用

继承的缺点在于子类和基类发生耦合

公共的部分 ->作为基类。

但是你很快就会发现特例需要修改

不通过继承来复用代码就是在组合

使用多个类进行组合

Re_use ; Extending, Using

Abstraction ;Parent Classes Interface

抽象可以复用代码,但不需要知道具体复用的是谁。拿到的是一个局部

继承 让使用者拿到某个类的实例,但是实际上传进来的是子类的实例;

一切都正常运作,但整体上都已经面目全非了。

默认的协议要求子类至少实现了这些方法

接口不像完整的类有各种方法和变量

给出了一份,对象的能力的协议。接口是最小化的。


08:08


将要用的东西以接口形式作为参数传进来

The Cons of Composition 缺点

需要初始化各种内部类型。大量的重复代码大量的包装方法。


组合可以减少对象之间的接触面。

减轻修改带来的摩擦力。

少量修改时继承会好用。但需要避免能直接访问的protected变量

显式创建需要重写且能访问的API

final/ sealed/private 密封methods方法被标记成避免不了解子类而修改出现bug

【熟】代码美学:组合为何优于继承?的评论 (共 条)

分享到微博请遵守国家法律