Java复用总结

本文探讨了软件复用的重要性,包括降低成本、提高软件可靠性及实现标准化。重点介绍了Java中不同级别的复用,如代码级别(白盒与黑盒)、模块级(类与接口的继承和委托)、库级别(API和包)以及系统级(框架)。同时,讨论了可复用性的外部指标,强调了类型可变、功能分组、实现可变和表示独立等关键因素。

软件复用是使用现有软件组件实现或更新软件系统的过程。

软件重用的两个视角:
面向复用编程:开发出可复用的软件
基于复用编程:利用已有的可复用软件搭建应用系统

为什么需要复用
降低成本和开发时间
产生可靠的软件
实现标准化,在不同应用中保持一致
可重用组件的级别和形态
代码级别复用

两种类型:

白盒复用:源代码可见,可修改和扩展,复制已有代码当正在开发的系统,进行修改
优点:可定制化程度高
缺点: 对其修改增加了软件的复杂度,且需要对其内部充分的了解
黑盒复用:源代码不可见,不能修改,只能通过API接口来使用,无法修改代码
优点:简单清晰
缺点:适应性差
具有的缺点
维护问题
很容易出现错误
需要使用的软件是如何工作的知识
需要访问源代码

模块级重用:类/接口

类的重用:继承和委托
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的特性

子类拥有父类非private的属性,方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
继承可以使用 extends 和implements 这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
库级别重用:API /包

一个好的API的特点:1、易于学习易于使用,2、即使没有文档很难滥用3、易于阅读和维护使用的代码4、足够强大以满足要求5、易于发展6、适合受众
系统级重用:框架
框架:一组具体类、抽象类、及其之间的连接关系
开发者根据 framework的规约,填充自己的代码进去,形成完整系统。通常通过选择性覆盖来扩展框架;或者程序员可以添加专门的用户代码来提供特定的功能—即定义继承了抽象类祖先操作的具体类 Hook方法,它被应用程序覆盖以扩展框架。Hook方法系统地将应用程序域的接口和行为与应用程序在特定上下文中所需的变体解耦。 控制反转:与库或标准用户应用程序不同,控制流不是由调用者决定的,而是由框架决定的。不可修改的框架代码:在接受用户实现的扩展时,框架代码不应该被修改。换句话说,用户可以扩展框架,但不应修改其代码。

可复用性的外部指标:
类型可变 ,适应不同的类型,且满足LSP
功能分组,提供完备的细粒度操作,保证功能的完整性,不同场景下复用不同的 操作(及其组合)
实现可变,ADT有多种不同的实现,提供不同的representations和abstract funtion,但具有同样的specification(pre-condition, postcondition, invariants),从而可以适应不同的应用场景
表示独立,表示独立性是信息隐藏规则的延伸,对于大型系统的顺利开发至关重要:内部实现往往会改变,但客服端不应受到影响。共性抽取,将共同的行为(共性)抽象出来,形成可复用实体

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值