从类、API、框架三个层面学习设计可复用软件的具体技术学习心得

一. 软件复用
软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件。软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
主要介绍一下几个方面的复用:
(一)基于程序库的软件复用
程序库是软件复用最基本、最普通形式。程序库是些经常使用、经过检验的规范化程序或子程序的集合。程序库中的程序是经常使用的功能。程序库通常是编译后的二进制可执行码或虚拟机可执行码,把它们放到目录中,设置环境变量,在程序中引入后就可以如同普通函数、对象、类等一样编程使用。过程式语言(如C)的程序库主要是各种函数。面向对象语言的程序库统称为类库,实质是一个综合性的面向对象的可重用类型集合, 包括接口、抽象类和具体类。程序库可以是语言系统内置的,也可以是第三发独立开发的。不同语言打包和弓引|用库的形式略有不同。在程序中引用库的关键字有include、using、 import、 with等。除了可以引用相同语言的库外,现在的编程语言也允许弓|入其他语言的库,最常见的是C语言的库。使用第三方开发的程序库与使用系统的程序库,本质上没有区别。通常是理解API设计、查阅API使F方式、学习示范代码及不断练习践。
(二)基于框架的软件复用
框架方法是构件技术、软件体系结构和应用软件开发三者发展结合的产物。框架通常以构件库的形式出现,但构件库只是框架的一个重要部分, 构件库的大规模复用需要框架。框架是部分代码复用,部分是设计复用,有时分析也可复用。框架可以用代码表示,也可以直接执行或复用。
框架的开发从代码、设计和分析三个层面复用了软件:
复用代码。从已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。
复用设计。它提供可复用的抽象算法及高层设计,并能将大系统分解成更小的构件 ,而且能描述构件间的内部接口。
复用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。
(三)基于API的软件复用
典型的例子是实现或者调用某个函数过程:
(1)实现某个函数的时候,函数的参数类型本来并没有见过,但通过智能感知提示我们能够了解到这个新 API 并正确取到参数中我们期望得到的信息。
(2)调用某个函数的时候,我们需要传入本来并没有见过的参数类型,通过智能感知提示,我们能够知道如何构造或获取这些类型然后正确传进去。
(3)调用完某个函数后我们得到了返回值,我们本来并没有见过这个类型,但通过智能感知提示,我们能够学习到这个新的类型,并知道如何正确使用这个返回值。
二. 类,API,框架
(一)设计可复用的类
在OOP中设计可复用的类,封装和信息隐藏,继承和重写,多态性,子类型和重载,泛型编程,行为子类型和Liskov替代原则(LSP),组合与委托。
(二)API
API是应用程序编程接口,库或框架的接口。好的API应具有以下几个性质:
可理解性: 对于一个优秀的API来说,涉及的概念都要在用户的可理解范围之内, 即使有新的概念也应该是渐进式的。一致性: 向下维持兼容。可见性: 最好提供一个入口用来作为用户API的起点。简单的任务应该有简单的方案: 所以API应该是分层的。保护投资: 善待API的用户。 尽量想办法让API漂亮点。如方法名,如结构等。
编写一个API需要考虑以下方面:API应该做一件事,且做得很好。API应该尽可能小,但不能太小。Implementation不应该影响API。记录文档很重要。考虑性能后果。API必须与平台和平共存。类的设计:尽量减少可变性,遵循LSP原则。方法的设计:不要让客户做任何模块可以做的事情,及时报错。
(三)框架
框架是封装了某领域内处理流程的控制逻辑,所以我们经常说框架是一个半成品的应用。由于领域的种类是如此众多,所以框架必须具有针对性。框架中也包含了很多元素,但是这些元素之间关系的紧密程度要远远大于类库中元素之间的关系。框架中的所有元素都为了实现一个共同的目标而相互协作。框架的目标性非常强,它专注于解决某一特定领域的问题,并致力于为这一特定领域提供通用的解决方案。
框架分为白盒框架和黑盒框架。白盒框架:通过子类化和重写方法进行扩展(使用继承)通用设计模式:模板方法;子类具有主要方法但对框架进行控制。黑盒框架:通过实现插件接口进行扩展(使用组合/委派);常用设计模式:Strategy, Observer ;插件加载机制加载插件并对框架进行控制。
一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。类库和框架都是为解决重用而生,而类库主要是解决程序代码上的重用,而框架主要是解决重用解决方案的设计思想的重用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值