该文章转自IT实验室,希望达到抛砖引玉的效果
---------------------------------------------------------------------
措施三:选择最简单的参数接口类型
在实施第二个措施时,应该选用哪一种接口类型来取代给定的类形式?答案是哪一个接口完全满足过程对参数的需求,同时又具有最少的多余代码和数据。描述参数对象要求的接口越简单,其他类实现该接口的机会就越大——由此,其对象能够作为参数使用的类也越多。从下面这个例子可以很容易地看出这一点:
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接口不能在其他地方重用。
总而言之,本文三个措施适合于改造现有的、按照面向对象惯例编写的代码。这三个措施与面向对象编程技术结合就得到了一种可在以后编写代码时使用的新式代码编写技术,它能够简化方法的复杂性和依赖关系,同时提高方法的可重用能力和内部凝聚力。
当然,这里的三个措施不能用于那些天生就不适合重用的代码。不适合重用的代码通常出现在应用的表现层。例如,创建程序用户界面的代码,以及联结到输入事件的控制代码,都属于那种在程序和程序之间千差万别的代码,这种代码几乎不可能重用。
分享到:
相关推荐
本文将介绍三种提高 Java 代码重用性的方法:改写类的实例方法、选择最简单的参数接口类型和把参数类型改成接口。 一、改写类的实例方法 在 Java 中,方法不能脱离类而单独存在。为了提高代码的重用性,我们可以把...
- **选择最简单的参数接口类型**:在有多重实现可能的情况下,应选择能满足方法需求且包含最少额外代码和数据的接口,以增加重用的机会。 2. **内聚性和耦合度**: 为了提高代码重用性,需要确保代码具有高内聚性...
Java代码可重用性的实现策略 Java代码可重用性是软件开发过程中的一个重要概念。软件开发工程师经常使用代码重用来提高开发效率、简化代码和减少开发成本。在现代面向对象编程过程中,继承是实现代码重用的重要机制...
3. 原型模式:通过复制现有对象来创建新对象,减少了重复代码,提高了代码的可重用性。在Java中,我们可以利用`Object`类中的`clone()`方法或者实现`Cloneable`接口来实现原型模式。 这些创建型设计模式都有其特定...
1. **JNI (Java Native Interface)**: JNI 是 Java 平台的标准接口,允许 Java 代码和其他语言写的代码进行交互。开发者需要编写 C/C++ 的头文件和源文件,通过 JNI 接口调用 DLL 中的函数。首先,你需要创建一个...
9. **泛型**:泛型是Java的一种类型安全机制,允许在编译时检查类型,避免了类型转换的麻烦,同时提高了代码的可读性和可重用性。 10. **反射**:Java的反射机制允许在运行时动态地获取类的信息并操作类的对象,是...
- **实践建议:** 在满足需求的前提下,选择最简单有效的方法解决问题。 #### 11. 注释与文档 - **要点:** 提供足够的注释和文档,帮助理解和维护代码。 - **实践建议:** 使用Javadoc等工具为公共API编写高质量的...
- 泛型的概念:提高代码的可重用性和安全性。 - 泛型的定义:使用指定类型参数。 - **通配符** - 通配符的使用:?表示任意类型。 - 限定通配符:? extends T、? super T。 - **泛型的其他应用** - 泛型类与泛型...
"Java入门实例源代码_1"这个压缩包提供了一系列的Java编程实例,覆盖了初学者需要掌握的基础知识。下面,我们将逐一解析这些实例所涉及到的关键知识点。 1. **实例1**:通常,实例1会涵盖Java程序的基本结构,包括`...
- **用异常代替错误代码,或者反其道而行之**:选择适当的错误处理机制,以提高代码的健壮性。 通过对上述各个层面进行重构,可以显著提高代码的质量,使其更加易于维护和扩展。重构不仅仅是修复代码中的错误,更是...
11. **API的使用**:描述中提到的"各种API的最简单使用"可能涵盖了Java标准库(如Math、String、Date等类)以及其他第三方库(如Apache Commons、Guava等)。API的使用能够提高代码效率,简化开发过程。 12. **项目...
- 继承允许创建新的类(子类)继承现有类(父类)的属性和方法,从而减少了代码冗余并增强了代码的可重用性。 - 在Java中,一个类可以通过`extends`关键字继承另一个类。需要注意的是,Java支持单继承但不支持多...
泛型允许我们在类、接口和方法中使用类型参数,提高了代码的类型安全性和重用性。例如,ArrayList中的E就是一个类型参数,代表了列表中元素的类型。通过泛型,我们可以在编译时检查类型匹配,避免了运行时的...
多态则是面向对象的三大特性之一,允许我们使用父类引用操作子类对象,提高代码的灵活性。 第十一讲到第十四讲,通常会涉及到异常处理机制。Java中的异常处理是通过try-catch-finally语句块来实现的,用于捕获并...
Java是一种广泛使用的面向对象的...总的来说,这个21课的Java初学者教程将覆盖Java编程的基础知识,从简单的变量和控制结构到复杂的面向对象编程和集合框架。通过每节课的学习和实践,你将逐步建立扎实的Java编程基础。
在泛型编程章节,读者将学习如何使用泛型来增强代码的类型安全性和重用性。集合框架的介绍涵盖了ArrayList、LinkedList、Set、Map等容器的使用,以及迭代器和泛型接口。事件监听器模型则涉及GUI编程,而图形用户界面...
它支持封装、继承和多态三大特性,这使得代码的重用性和可维护性得到了极大提高。 3. **跨平台性**:正如前面所述,Java的字节码机制确保了其程序可以在任何支持JVM的平台上运行,实现了“一次编写,到处运行”的...
- 数据类型:Java有两类数据类型:基本类型(如int、char、float等)和引用类型(如类、接口、数组)。 - 变量:变量是用来存储数据的容器,声明时需要指定数据类型。 - 控制流语句:包括条件语句(if-else)、循环...
它允许开发者在类、接口和方法中定义类型参数,提高了代码的类型安全性,避免了强制类型转换,同时增强了代码的重用性。 2. **枚举(Enums)**:Java 1.5引入了枚举类型,使得常量集合更易于管理和使用。枚举可以...