设计模式笔记

1. 类继承与接口继承的比较。

对象的类与对象的类型的比较:一个对象的类定义了对象怎么样实现的,同时也定义对象内部状态和操作的实现。但是对象的类型只与他的接口有关,借口即对象能响应的请求的集合。一个对象可以有多个类型,不同的类对象可以有相同的类型。

理解类继承和接口继承之间的差别也十分重要。类继承根据一个对象的实现定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承描述了一个对象什么时候能用来替代另一个对象。

2. 对接口编成而不是实现编成

类继承是一个通过复用父类功能的基本机制。允许根据旧对象快速定义新对象。允许你从已存在的类中继承所需要的绝大部分功能,从而几乎无需任何代价就可以获得新的实现。

然而,实现的复用只是成功的一半,继承所拥有的定义具有相同接口的对象族的能力也是很重要的。因为多态依赖这种能力。

当继承被适当的使用时,子类仅仅添加或重定义操作,而没有隐藏父类的操作。这时,所有的子类都能响应抽象类接口中的请求,从而子类的类型都是抽象类的子类型。

只根据抽象类中定义的接口来操作对象好处:

1. 客户无须知道他们使用对象的特定类型,只须对象有客户需要的接口。

2. 客户无须知道他们使用对象是什么类来实现的,只需知道定义接口的抽象类。

极大的减少了子系统实现之间的依赖关系,也产生了可复用的面向对象设计的原则:针对接口编程,而不是针对实现编程。

继承和组合的比较:

继承缺点:继承是在编译的时刻就被定义了,所以无法在运行时刻该百年从父类的实现。

而且父类通常至少定义了部分子类的具体表示。因为继承对子类解释了其父类的实现细节,被认为“破坏了封装性”,子类实现与父类密切联系。导致父类中任何变化都回导致自类发生变化。

组合优点:

组合是通过对其对对象的引用而在运行时动态定义的。要求对吸纳给遵守彼此的接口约定,而这些接口并不妨碍你将一个对象和其他对象一起使用。

对象组合优先使用有助于保持每个类的封装,并集中在单个任务上。类和继承层次会保持较小规模。另外,基于对象组合的设计有更多的对象(而有较少的类),且系统的行为依赖于对象间的关系而不是被定义在某个类中。

从而导出面向对象的第二个原则:优先使用对象组合,而不是类继承。

3. 委托

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值