程序的可复用性概念

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

1.可复用软件

优点:
1.很大的适应性。
2.降低成本和开发时间。
3.充分的测试,具有可靠性。
4.标准化,一致化。
缺点:
无法拿来就用,需要适配。例如:需要添加额外的函数,舍弃一些多余的函数,以及修改一些操作的方式。

2.如何衡量“可复用性”

根据复用软件被用到的频繁程度以及实现一个复用软件所需要的代价有多大。
一个好的可复用性软件应该具有的特性:简单,与标准兼容,灵活可变,可扩展,参数化,模块化,变化的局部性,稳定以及丰富的文档和帮助。

3.可复用性软件的层次和形态

最主要的复用是在代码层面上,但软件构造的任何实体都有可能被复用。

3.1代码级的复用

3.1.1白盒复用(源代码可见,可修改和扩展)

复制已有的代码到正在开发的程序中,可定制化程度高,但增加了软件复用的复杂度,且需要对复用软件内部充分了解。

3.1.2黑盒复用(源代码不可见,不能修改)

只能通过接口来使用,无法修改代码,简单清晰,但是适应性差。

3.2源代码复用

最简单的方式:即将已经完成的代码复制粘贴到自己的程序当中。但是由于两个软件可能不适应,应该在多个不适应的地方进行适配。

3.3模块复用(类/接口)

需要使用import声明要使用的类或接口的路径。

3.3.1使用类的方式——继承

继承的父类的所有属性和方法在子类中都存在,而且可以用重写(override)来改变父类中方法的行为。

3.4库层次的复用(API/Package)

库:提供可复用功能的类和方法的集合。
框架(Framework):可自定义为应用程序的可重用骨架代码。
LibraryFramework的区别:
库:开发者构造可运行软件实体,其中涉及对可复用库的调用。
框架:作为主程序加以执行,执行过程中调用开发者所写的程序。

3.5系统层次的复用——Framework

框架是一组具体类,抽象类,及其之间的连接关系。框架为一系列问题提供了解决方案,而不是单一的问题。
开发者根据framework的规约,填充自己的代码进去,形成完整的系统。
Framework的设计:(白盒和黑盒框架)
白盒框架:通过代码层面的继承进行框架扩展。
黑盒框架:通过实现特定接口/委托进行框架扩展。

4.复用的外部观察

类型可变:适应不同的类型,且满足LSP。
实现可变:ADT有多种不同的实现,提供了不同的属性和抽象方法,但是具有相同的规约。
表示独立性:信息隐藏。

5.LSP(里氏替换原则)

LSP为继承定义了一个规范。
**每一个子类B都是A。**但是B的前置条件(输入参数)必须比A的前置条件更宽松或相同。B的返回值必须比A的返回值更严格或相同。
LSP参考网址:https://blog.csdn.net/hfreeman2008/article/details/52344343?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值