您现在的位置: 弘智首页 > JAVA > JAVA资料下载 >

关于能提高Java代码可重用性的三个措施(下)

时间:2012-10-31 10:54 来源:未知 作者:zcl

措施三:选择最简单的参数接口类型

在实施第二个措施时,应该选用哪一种接口类型来取代给定的类形式?答案是哪一个接口完全满足 过程对参数的需求,同时又具有最少的多余代码和数据。描述参数对象要求的接口越简单,其他类实现该接口的机会就越大——由此,其对象能够作为参数使用的类 也越多。从下面这个例子可以很容易地看出这一点:

以下是引用片段:
static public boolean areOverlapping(Window window1, Window window2) {...} 

这个方法用于检查两个窗口(假定是矩形窗口)是否重叠。如果这个方法只要求从参数获得两个窗口的矩形坐标,此时相应地简化这两个参数是一种更好的选择:

以下是引用片段:
static public boolean areOverlapping(Rectangular rect1, Rectangular rect2) {...} 

上面的代码假定Window类型实现了Rectangular接口。经过改动之后,对于任何矩形对象我们都可以重用该方法的功能。

有些时候可能会出现描述参数需求的接口拥有太多方法的情况。此时,我们应该在全局名称空间中定义一个新的公共接口供其他面临同一问题的代码重用。

当我们需要象使用C语言中的函数指针一样使用参数时,创建的接口描述参数需求是最好的选择。例如,假设有下面这个过程:

以下是引用片段:
static public void sort(List list, SortComparison comp) {...} 
该方法运用参数中提供的比较对象comp,通过比较给定列表list中的对象排序list列表。sort对comp对象的要求是要调用一个方法进行比较。因此,SortComparison应该是只带有一个方法的接口:
以下是引用片段:
public interface SortComparison { 
boolean comesBefore(Object a, Object b); 
SortComparison接口的目的在于为sort提供一个它所需功能的钩子,因此SortComparison接口不能在其他地方重用。

总而言之,本文三个措施适合于改造现有的、按照面向对象惯例编写的代码。这三个措施与面向对象编程技术结合就得到了一种可在以后编写代码时使用的新式代码编写技术,它能够简化方法的复杂性和依赖关系,同时提高方法的可重用能力和内部凝聚力。

当然,这里的三个措施不能用于那些天生就不适合重用的代码。不适合重用的代码通常出现在应用的表现层。例如,创建程序用户界面的代码,以及联结到输入事件的控制代码,都属于那种在程序和程序之间千差万别的代码,这种代码几乎不可能重用。

(责任编辑:admin)