Reusability1
Reusability
1. 复用的层面
1.1 代码级别复用
顾名思义,代码复用就是把代码都搬过来,这是最主要的复用
1.1.1 白盒复用
白盒的意思就是里面的东西我们都知道是什么,具体实现的方式也知道,直接把源代码复制过来,可以根据自己的实际需求修改里面的代码(这个应该是最熟悉的,毕竟我们以前写作业遇到不会的就是这么写的嘛)
优点:个性化、可定制化程度高
缺点:增加了软件的复杂度,需要对源代码有一定的了解
1.1.2 黑盒复用
黑盒的意思是里面的东西不知道是什么,也没法改,只知道怎么用(详情参加微积分学习方法hh)
优点:简单、清晰
缺点:适应性差一些
1.2 模块级别复用
一般来说就是把封装好的类、接口等等直接拿过来用,根据它的spec来复用
1.3 类库级别复用
例如Java Library 像我们平时用的一些API例如Map, Set, List都属于这一方面
1.4 系统级别的复用:框架(Framwork)
1.4.1 框架的定义
里面有一系列的抽象类、具体类以及对应的spec却没有具体实现,需要开发者自己根据spec进行代码填充
只有骨架,没有血肉。
Framework作为主程序执行,调用开发者写的具体实现;
开发者根据Framework预留的接口实现
可以将框架看作是更大规模的API复用,除了提供可复用的API, 还将这些模块之间的关系都确定了下来,等于说就是复用了一个系统,系统的内容由我们开发者自己填写
1.4.2 领域复用
实现一个系统(框架)需要将抽象类中的一些抽象方法进行具体的实现或者针对特定的应用增加新的方法。
1.4.2.1 Hook Method
通过重写方法的方式实现在一个应用当中对框架的扩展。它可以降低接口和应用的需求之间的耦合度(依赖性)
我的理解是API内部有实现方法,但不能够直接拿来用,Hook Method是将用户需求和API内部实现方法连接起来的,有点类似于设计模式中的template模式。
1.4.2.2 Inversion of Control
一般来说都是由写代码的人来控制各个接口、类之间的关系,但对于框架来说这都是定死的了,实现者无法修改框架中类之间的关系
带来了好处就是降低了对象之间的依赖程度,提供灵活性和可维护性
1.4.2.3 Non-modifiable framework code
框架中的代码是无法改变的,实现者只能扩展功能, 但不能修改基本功能
1.4.3 框架设计
1.4.3.1 框架根据应用的不同而不同
框架本身设计是为了解决不同类型的问题而不是针对某一单一问题,因此它更像是一个模板,所以对于不同类型的应用,框架的设计不同
1.4.3.1 框架扩展方式
1.4.3.1.1 白盒框架
之前提到过白盒的意思是知道里面的东西是什么,所以可以通过inheritance,override,dynamic binding来扩展框架
1.4.3.1.2 黑盒框架
黑盒是我们不知道里面有什么,只知道怎么用。
类似于插件,通过spec了解某个模块的作用然后直接调用这个模块实现某个功能也就是delegation
Reusability1的更多相关文章
随机推荐
- First step in troubleshooting complex issues: Define and scope your issue properly
最近在查调试相关资料的时候,无意看到Tess的一篇关于如何快速分析复合场景问题的博文,感觉很实用,Mark备忘. My 9 questions for a pretty thorough proble ...
- 【MFC】基于opencv的趣味相机
为了参加学校的科技节,故用mfc随手制作了一个名为<趣味相机>的小程序: 其中对图形图像处理运用到了opencv. 效果图 这界面逼格低了点╭(╯^╰)╮ 有兴趣的朋友可以在此下载尝试:h ...
- wpf 错误 执行了 QueryInterface 调用,请求提供 COM 可见的托管类“BoilerMonitoringV1._0.MapControl”的默认 IDispatch 接口。
在做wpf嵌入地图时,在自定义的WebBrowser 里面使用JavaScript调用外部方法的时报的错误 在原来的WinForm里 我们只要在窗体类设置的头部设置个 [System.Runtime. ...
- 1350 Taxi Cab Scheme DAG最小路径覆盖
对于什么是DAG最小路径覆盖以及解题方法在我的另外的博客已经有了.http://www.cnblogs.com/Potato-lover/p/3980470.html 此题的题意: 公交车(出租车)车 ...
- 杭电1003 Max Sum 【连续子序列求最大和】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...
- (转)shiro权限框架详解06-shiro与web项目整合(下)
http://blog.csdn.net/facekbook/article/details/54962975 shiro和web项目整合,实现类似真实项目的应用 web项目中认证 web项目中授权 ...
- Java Spring 两大特色
0 引言 本文主要描述的是Spring常用的两大特色功能:AOP和IoC容器 1 IoC Spring的IoC:就是常说的“控制反转”,也又叫依赖注入的(DI). 优点:IoC最大的好处就是把对象生成 ...
- jmeter目录讲解
1.jmeter目录详解 2.这是bin目录下的examples 3.这是bin目录下的report-template 注意啦:jmeterw.cmd运行不带命令的窗口会侵占8080端口,会和tomc ...
- BZOJ 3434 [WC2014]时空穿梭 (莫比乌斯反演)
题面:BZOJ传送门 洛谷传送门 好难啊..反演的终极题目 首先,本题的突破口在于直线的性质.不论是几维的空间,两点一定能确定一条直线 选取两个点作为最左下和最右上的点! 假设现在是二维空间,选取了$ ...
- BZOJ 3876 [AHOI/JSOI2014]支线剧情 (最小费用可行流)
题面:洛谷传送门 BZOJ传送门 题目大意:给你一张有向无环图,边有边权,让我们用任意条从1号点开始的路径覆盖这张图,需要保证覆盖完成后图内所有边都被覆盖至少一次,求覆盖路径总长度的最小值 最小费用可 ...