HIT软件构造:5.面向复用的软件构造技术

目录

一、为什么需要复用:

二、复用方式:

三、框架:

四、LSP:


一、为什么需要复用:

-“The drive to create reusable rather than transitory artifacts has aesthetic and intellectual as well as economic motivations and is part of man’s desire for immortality.

– It distinguishes man from other creatures and civilized from primitive societies” (Wegner, 1989).

1.降低成本和开发时间

2.经过充分测试,可靠、稳定

3.标准化,在不同应用中保持一致

二、复用方式:

1.源代码级别的复用

2.模块级别的复用:类/抽象类/接口

3.库级别的复用:API/包

4.系统级别的复用:框架

三、框架:

一组具体类、抽象类、及其之间的连接关系

将framework看作是更大规模的API复用,除了提供可复用的API,还将这 些模块之间的关系都确定下来,形成了整体应用的领域复用

白盒框架:通过代码层面的继承进行框架拓展

黑盒框架:通过实现特定接口/delegation进行框架扩展

四、LSP:

子类型可以增加方法,但不可删

子类型需要实现抽象类型中的所有未实现方法

子类型中重写的方法必须有相同或子类型的返回值或者符合co-variance的参数

子类型中重写的方法必须使用同样类型的参数或者符合contra-variance的参数

子类型中重写的方法不能抛出额外的异常

协变:

父类型->子类型:

越来越具体specific

返回值类型:不变或变得更具体

异常的类型:也是如此

反协变:(在java中遇到此类情况,当作overload来看待)

父类型->子类型:越来越具体specific

参数类型:要相反的变化,不变或越来越抽象

数组的子类型化:

泛型的子类型化:

通配符使用场景:

If you are writing a method that can be implemented using functionality provided in the Object class.

When the code is using methods in the generic class that don't depend on the type parameter. For example, List.size or List.clear.

In fact, Class is so often used because most of the methods in Class do not depend on T

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值