提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
从类、API、框架三个层面学习如何设计可复用软件实体的具体技术 ,并撰写学习心得
一、 软件复用
软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件。软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
基于API的软件复用:
(1)实现某个函数的时候,函数的参数类型本来并没有见过,但通过智能感知提示我们能够了解到这个新 API 并正确取到参数中我们期望得到的信息。
(2)调用某个函数的时候,我们需要传入本来并没有见过的参数类型,通过智能感知提示,我们能够知道如何构造或获取这些类型然后正确传进去。
(3)调用完某个函数后我们得到了返回值,我们本来并没有见过这个类型,但通过智能感知提示,我们能够学习到这个新的类型,并知道如何正确使用这个返回值。
二、 类,API,框架
类是是面向对象程序设计实现信息封装的基础。
类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。类其实就是一种引用数据类型,它的本质是代表一种数据类型,是作为现实生活中一类具有共同特征事物的抽象,类的内部封装了属性和方法用于操作自身的成员,这些方法是对这个对象进行操作的程序和过程,类的构成包括成员属性和成员方法,从类出发的软件复用方式为继承和委托,继承就是通过新操作扩展基类或覆盖操作,委托则是捕获操作并将其发送给另一个对象,从类层面来说,有了继承,就可以使子类拥有父类的属性和方法,这也是一种复用,甚至可以说是十分重要的一种复用,子类可以不用将某些方法。而对于委托方法,在java中类直接调用这个类的static方法,类似c语言中的函数,直接调用就行,这样也是一种类的复用,类似的有Math.sprt()这种方法的调用与使用。
API:应用程序编程接口,库或框架的接口
客户端:使用API的代码 插件:定制框架的客户端代码
扩展点:框架内预留的“空白”,开发者开发出符合接口要求的代码(即插件),框架可调用,从而相当于开发者扩展了框架的功能
协议:API和客户端之间预期的交互顺序
回调:框架调用来访问定制功能的插件方法
生命周期方法:根据协议和插件状态按顺序调用的回调方法
建议:始终以开发API的标准面对任何开发任务;
面向“复用”编程而不是面向“应用”编程。
难度:要有足够良好的设计,一旦发布就无法再自由改变。
编写一个API需要考虑以下方面:
API应该做一件事,且做得很好 API应该尽可能小,但不能太小 Implementation不应该影响API 记录文档很重要 考虑性能后果
API必须与平台和平共存 类的设计:尽量减少可变性,遵循LSP原则 方法的设计:不要让客户做任何模块可以做的事情,及时报错
框架
框架分为白盒框架和黑盒框架。
白盒框架:
通过子类化和重写方法进行扩展(使用继承); 通用设计模式:模板方法; 子类具有主要方法但对框架进行控制。
黑盒框架:
通过实现插件接口进行扩展(使用组合/委派); 常用设计模式:Strategy, Observer ; 插件加载机制加载插件并对框架进行控制。