软件构造相关

什么是软件复用
通过现有的软件组件实现或者更新一个软件系统

两个问题
开发出可复用的软件(for reuse)
利用已有的软件系统搭建出软件系统(with reuse)

为什么复用
降低成本和开发时间
经过了充分的测试
标准化,能够在不同的一个用中保持一致

复用的代价
做到复用需要有清晰的定义、简洁明了的接口设计以及对未来可能用途的看法,左到这些需要代价

白盒复用
源代码可见,可修改和扩展
直接将代码复制过来
好处:可定制化程度高
坏处:需要对第三方代码进行充分的了解

黑盒复用
源代码不可见,不能修改
只能通过api接口使用
好处:简单、清晰
坏处:适应性不好

可复用代码来源
组织的内部代码
第三方提供的库
语言自身提供的库
代码示例
来自同事
已有系统内的代码
开源软件的代码

复用等级
源代码level(method、statements)
直接复制粘贴
在这个过程中可能有很多错误
可能需要知道原来的软件是怎么工作的
需要有获得源代码的权限

模块level(class and interface)
将jar包放在classpath下面就可以了
java api很重要
封装有利于复用
不需要改很多代码

继承(inheritance)
可以继承已经有的类
可以重写类中的方法
不能取消属性和方法

委托(delegation)
通过另一个类的一个实例来调用类的方法

库level(API)
库是一组可复用的类和方法
框架是可重用的框架代码,并且可以定制到自己的应用中

框架level(framework)系统层次
框架:一组具体类、抽象类及其之间的连接关系
开发者根据framework的规约,填充自己的代码进去,形成完整系统
Hook methods:继承框架,并overwritten它的方法
Inversion of control:控制是框架决定的,而不是调用者,也就是和api直接接触的是框架
只能扩展框架代码,不能修改框架代码

黑盒框架
通过特定的接口实现,也就是你必须定义并实现满足特定接口的adt,这些adt最终会通过delegation被框架使用

白盒框架
通过继承和动态绑定实现
实现子类、重写钩子方法

组件和框架的关系
使用框架开发组件
使用组件简化框架的开发

可复用性的外部观察
Type Variation (类型可变)
指的就是泛型技术

routine grouping(功能分组)
提供晚辈的细粒度操作,保证功能的完整性,不同场景下复用不同的操作

implementation variation(实现可变)
ADT有多种不同的实现,提供不同的representation和abstract function,但具有同样的specification,从而可以适应不同的应用场景

representation independence(表示独立)
内部实现可能会经常变化,但客户端不应受到影响
表示独立性,将信息隐藏

factoring out common behaviors(共性抽取)
将共同的行为抽象出来,形成可复用实体
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值