【HIT软件构造】复用技术

目录

前言

1.代码重用的类型

1.1白盒复用

1.2黑盒复用

2.复用的级别

2.1代码级复用

2.2模块级复用

2.3库级复用

2.4系统级复用

3.LSP替换原则


前言

什么是软件复用呢?用我的话说,那就是一次编程,多次使用。通过将在编程中多次使用的功能编写出代码,在以后再次使用该功能时直接使用现成的,就可以实现复用,这样的复用可以大大地简化代码,减少重复,进而大大提高软件开发的效率。当然,这种效率是相对而言的,因为在之后多次复用的方便就意味着在你初次开发该部分代码时将要付出更多的时间和心血。所以,若该部分功能复用次数极多时,该代价是值得的;但是若编写好后之后却很少使用,那显然该代价是不值得的!所以,在开发可复用的软件之前,一定要考虑好该软件的使用频率是怎样的,做好代价评估,避免做无用功。

1.代码重用的类型

1.1白盒复用

在这里我们又用到了黑白盒来形象地定义复用类型,那我们就很自然的能猜到其大体所指的是什么意思了。白盒复用即源代码是可见的,可以进行修改和扩展。在对源码根据我们的需要进行修改后,复制到我们正在开发的软件中。

对于该复用类型来说,其优点就是可以根据我们自身的需要进行修改,但是缺点就是过程相对复杂,需要对源代码进行充分了解。

1.2黑盒复用

黑盒复用自然就是源代码不可见且不能修改扩展的。我们所得到的是程序的接口,通过将接口具体实现,来实现复用。

相对于白盒复用来说,该方法更加简单清晰,我们并不需要直到其内部具体是怎么实现的。但是该方法的适用性较差,无法根据需要对其内部做相应更改。

2.复用的级别

2.1代码级复用

通过复制粘贴代码到我们开发的程序来实现复用。

对于该方法来说,若出错概率较高,尤其是代码相对复杂是,会更有可能存在一些隐患,需要仔细地检查更改。同时,我们需要对源码实现有着具体的了解,以便于根据我们的需要对代码进行更改。

2.2模块级复用

以类为单位进行代码的复用,通过类文件或jar包等来获取所需的复用类。与代码级复用相比其优势是明显的,需要管理的代码边的更少了,出错的概率自然也就更低了。当然,我们需要通过静态链接的方式将所用到的包链接到一起。

2.3库级复用

  • 库 将可重用功能的类和方法提供给使用者,使用者通过在程序中调用实现复用。
  • 框架 提供一个程序运行的骨架和许多的接口,由用户来编写这些接口的具体实现,来使得框架成功地运行

 

两者的一个明显的不同在于程序运行的主动权在哪方。库的方法的主动权在于使用者,使用者决定程序运行的方式。而框架的方法主动权在于框架,框架已经规定好了程序要按照怎样的流程步骤来执行,交给开发者做的只是具体实现其各个步骤。

2.4系统级复用

框架可看做是更大规模的API复用,它在提供了复用的API的同时,也将模块间的关系确定了下来。

框架有两种类型,白盒框架和黑盒框架。再次提到黑盒与白盒,不做过多的赘述。简单提一下两者扩展方式的不同。

  • 白盒框架 通过代码层面的继承进行框架的扩展
  • 黑盒框架 通过实现特定接口来进行框架的扩展

3.LSP替换原则

子类型替换父类型时,要比父类型有着更强的规约,更强的约束条件,具体有以下几点:

  • 方法可增加但不可减少
  • 方法参数相同或为父类,逆变
  • 方法返回值相同或为子类,协变
  • 子类型要实现父类型所有未实现的方法
  • 不能抛出额外的异常,协变
  • 后置条件不能更弱
  • 前置条件不能更强
  • 不变量要保持

 此外,由于对于Java来说,重写不支持参数逆变,若参数改变则被视为重载,所以要重写则参数类型不可进行改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻了巴卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值