面向复用性软件构造技术

设计可复用类

面向对象编程可复用类设计

1、Encapsulation and information hiding 封装与信息隐藏
2、Inheritance and overriding 继承与重写
3、Overloading 重载
4、Parametric polymorphism and generic programming 参数多态与泛型编程
5、Behavioral subtyping and Liskov Substitution Principle (LSP) 行为子类型与Liskov替换原则
6、Composition and delegation 组合与委托
其中前四种均为OOP基本技术,以下重点说明后两点

行为子类型与Liskov替换原则

行为子类型

子类型可以增加方法,但不可以减少方法
子类型需要实现抽象类(接口、抽象类)中未实现的方法
子类型中重写的方法必须使用同样类型的参数或者符合contra-variant的参数(此种情况Java目前按照重载overload处理)
子类型中重写的方法不能抛出额外的异常

LSP

Let q(x) be a property provable about objects x of type T, then q(y) should be provable for objects y of type S where S is a subtype of T.
如果对于类型T的对象x,q(x) 成立,那么对于类型T的子类型S的对象y,q(y) 也成立。

LSP是针对强行为子类型提出的,除了满足上述行为子类型的要求外,还需满足:
前置条件不强化
后置条件不弱化
不变量要保持不变
子类型方法参数逆变
子类型方法返回值协变
异常类型协变
【关于逆变与协变的总结】

对于子类型及LSP的总结:
在这里插入图片描述

委托与组合 Delegation and Composition

设计可复用库与框架

API and Library
Framework
Java Collections Framework

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值