`
jiagyao
  • 浏览: 96429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

提高Java代码重用性方法 措施二:把参数类型改成接口

阅读更多
该文章转自IT实验室,希望起到抛砖引玉的功效
----------------------------------------------------------------
措施二:把参数类型改成接口

正如Allen Holub在《Build User Interfaces for Object-Oriented Systems》中所指出的,在面向对象编程中,代码重用真正的要点在于通过接口参数类型利用多态性,而不是通过类继承:

    “……我们通过对接口而不是对类编程达到代码重用的目的。如果某个方法的所有参数都是对一些已知接口的引用,那么这个方法就能够操作这样一些对象:当我们编写方法的代码时,这些对象的类甚至还不存在。从技术上说,可重用的是方法,而不是传递给方法的对象。”

    在“措施一”得到的结果上应用Holub的看法,当某块代码能够编写为独立的全局过程时,只要把它所有类形式的参数改为接口形式,我们就可以进一步提高它的可重用能力。经过这个改动之后,过程的参数可以是实现了该接口的所有类的对象,而不仅仅是原来的类所创建的对象。由此,过程将能够对可能存在的大量的对象类型进行操作。

    例如,假设有这样一个全局静态方法:

static public boolean contains(Rectangle rect, int x, int y) {...}



    这个方法用于检查指定的点是否包含在矩形里面。在这个例子中,rect参数的类型可以从Rectangle类改变为接口类型,如下所示:

static public boolean contains(Rectangular rect, int x, int y) {...}



    而Rectangular接口的定义是:

public interface Rectangular {Rectangle getBounds();}



    现在,所有可以描述为矩形的类(即,实现了Rectangular接口的类)所创建的对象都可以作为提供给pRectangular.contains()的rect参数。通过放宽参数类型的限制,我们使方法具有更好的可重用性。

    不过,对于上面这个例子,Rectangular接口的getBounds方法返回 Rectangle,你可能会怀疑这么做是否真正值得。换言之,如果我们知道传入过程的对象会在被调用时返回一个Rectangle,为什么不直接传入 Rectangle取代接口类型呢?之所以不这么做,最重要的原因与集合有关。让我们假设有这样一个方法:

static public boolean areAnyOverlapping(Collection rects) {...}



    该方法用于检查给定集合中的任意矩形对象是否重叠。在这个方法的内部,当我们用循环依次访问集合中的各个对象时,如果我们不能把对象cast成为Rectangular之类的接口类型,又如何能够访问对象的矩形区域呢?唯一的选择是把对象 cast成为它特有的类形式(我们知道它有一个方法可以返回矩形),它意味着方法必须事先知道它所操作的对象类型,从而使得方法的重用只限于那几种对象类型。而这正是前面这个措施力图先行避免的问题!




分享到:
评论

相关推荐

    如何提高代码重用性

    java 提高代码重用性的三个措施 代码重用性

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

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

    基于Java代码重用性的研究.pdf

    基于Java代码重用性的研究.pdf

    Java代码可重用性的实现策略.pdf

    Java代码可重用性的实现策略

    如何提高java代码的重用性

    在本篇文章中小编给各位分享了关于如何提高java代码的重用性的相关知识点内容,有需要的朋友们参考下。

    Java语言 泛型讲解案例代码 (泛型类、泛型接口、泛型方法、无界及上下限通配符、泛型对协变和逆变的支持、类型擦除 ...)

    实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以通过运行这些示例代码来观察泛型的行为和...

    linux下几种最常用的IPC接口,这样一来,统一了接口,提高代码重用性

    linux下几种最常用的IPC接口,这样一来,统一了接口,提高代码重用性

    Java基础知识:方法和函数

    Java 基础知识:方法和函数 Java 是一种广泛使用的编程语言,具有强大的面向对象编程能力。...掌握方法和函数的使用方法,可以提高代码的可读性、可维护性和重用性,使 Java 程序更加高效和灵活。

    实验5:Java抽象类与接口.doc

    Java 抽象类与接口实验报告 一、实验目的及要求 本实验的目的是掌握 Java 中的抽象类和接口的概念及其应用。通过本实验,学生将了解抽象类和接口的定义、特点及使用场景,并掌握如何使用抽象类和接口来描述不同的...

    java 面向对象 知识点总结01

    3. 提高代码的重用性:方法重载使得代码更加重用,因为程序员可以根据不同的参数类型和数量来调用不同的方法,从而减少代码的冗余和重复。 三、方法重载的实现 方法重载的实现可以通过以下步骤来实现: 1. 定义...

    Java抽象类接口与多态PPT教案学习.pptx

    继承的本质目的在于使得子类可以重用父类的代码,提高代码的可重用性。 五、习题解析 习题1: 问题:What two must the programmer do to correct the compilation errors? 解析: 代码中有两处错误: * MeGo ...

    《java基础入门》第三版 第八章作业.doc

    泛型方法可以限制可以传递给方法的参数类型,提高代码的安全性和可读性。 ### 6.类型参数的命名约定 类型参数的命名约定通常使用大写字母,例如T、E、K、V等。类型参数的命名约定可以提高代码的可读性和维护性。 ...

    Java基础知识笔试题及答案

    泛型可以提高 Java 程序的类型安全,消除强制类型转换,提高代码的重用率。 九、Java 封装 Java 封装是指把数据项和方法隐藏在对象的内部,把方法的实现内容隐藏起来。Java 中的封装类有 Double、Integer、Float、...

    java基础面试题目详解

    封装:把方法和变量都封装到一个类里,提高代码的安全性 继承:单继承 提高代码的重用性 多态:多态就是同一个类或者接口,使用不同的实例而执行不同操作,提高 代码的灵活性。 3. 基本数据类型

    java面向对象程序设计第二版源代码

    Java 面向对象程序设计第二版源代码 Java 是一种面向对象编程语言,它的设计理念是基于面向对象编程的思想。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将程序看作是由对象和它们之间的...

    最大化Java代码可重用性的策略研究.pdf

    在java应用开发中,代码的重用得到了越来越多的软件工程师的重视,因为对于某些代码的重用不仅可以提高程序开发的效率,而且还能够将一些比较实用的代码有效地运用到其它的项目中,以节约软件开发的成本、提高软件生产的...

    Java 基础泛型.pdf

    Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。 Java泛型的核心思想是类型参数化,即在类、接口或方法的定义...

    Java代码重用之功能与上下文重用

    一旦一段代码被封装和重用,那么只需要检查很少的一段代码即可确保程序的正确性。接下来通过本文给大家介绍Java代码重用之功能与上下文重用的相关知识,感兴趣的朋友跟随脚本之家小编一起学习吧

    01-JavaSE-JAVA运行原理.ppt

    有一个庞大的库,库中包含很多可重用的代码和提供安全性、可移植性以及可自动垃圾回收等服务的执行环境。 JAVA特点: 简单性:摒弃了C++中易引发错误的特性,如指针和内存管理; 面向对象性:支持代码继承及...

    华为JAVA编码规范.pdf

    华为JAVA编码规范.pdf是华为公司编写的JAVA编程语言编码规范,旨在提供一个统一的编程风格和代码组织方式,以提高代码的可读性、维护性和可重用性。该规范涵盖了编程语言的基本结构、命名规则、代码组织、注释、编程...

Global site tag (gtag.js) - Google Analytics