| C114首页 | 新闻 | 技术 | 市场 | 会展 | 黄页 | 人物 | 3G | WiMax | LTE | FTTH | IPTV | IP通信 | NGN 通信人家园 | 通信人博客 | 通信商情网 | 通信人才网 | English |
|
|
关于提高Java代码可以重用性的三个措施
( 2008/10/13 16:05 )
本文介绍了三种修改现有代码提高其可重用性的方法,它们分别是:改写类的实例方法,把参数类型改成接口,选择最简单的参数接口类型。 措施一:改写类的实例方法 通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的代码重用机制。换句话说,如果不继承整个类的所有方法和数据成员,我们无法重用该类里面的单个方法。继承总是带来一些多余的方法和数据成员,它们总是使得重用类里面某个方法的代码复杂化。另外,派生类对父类的依赖关系也使得代码进一步复杂化:对父类的改动可能影响子类;修改父类或者子类中的任意一个类时,我们很难记得哪一个方法被子类覆盖、哪一个方法没有被子类覆盖;最后,子类中的覆盖方法是否要调用父类中的对应方法有时并不显而易见。 任何方法,只要它执行的是某个单一概念的任务,就其本身而言,它就应该是首选的可重用代码。为了重用这种代码,我们必须回归到面向过程的编程模式,把类的实例方法移出成为全局性的过程。为了提高这种过程的可重用性,过程代码应该象静态工具方法一样编写:它只能使用自己的输入参数,只能调用其他全局性的过程,不能使用任何非局部的变量。这种对外部依赖关系的限制简化了过程的应用,使得过程能够方便地用于任何地方。当然,由于这种组织方式总是使得代码具有更清晰的结构,即使是不考虑重用性的代码也同样能够从中获益。 在Java中,方法不能脱离类而单独存在。为此,我们可以把相关的过程组织成为独立的类,并把这些过程定义为公用静态方法。 例如,对于下面这个类:
我们可以把它改写成:
其中,pPolygon是:
从类的名字pPolygon可以看出,该类所封装的过程主要与Polygon类型的对象有关。名字前面的p表示该类的唯一目的是组织公用静态过程。在Java中,类的名字以小写字母开头是一种非标准的做法,但象pPloygon这样的类事实上并不提供普通Java类的功能。也就是说,它并不代表着一类对象,它只是Java语言组织代码的一种机制。 在上面这个例子中,改动代码的最终效果是使得应用Polygon功能的客户代码不必再从Polygon继承。Polygon类的功能现在已经由pPolygon类以过程为单位提供。客户代码只使用自己需要的代码,无需关心Polygon类中自己不需要的功能。但它并不意味着在这种新式过程化编程中类的作用有所削弱。恰恰相反,在组织和封装对象数据成员的过程中,类起到了不可或缺的作用,而且正如本文接下来所介绍的,类通过多重接口实现多态性的能力本身也带来了卓越的代码重用支持。然而,由于用实例方法封装代码功能并不是首选的代码重用手段,所以通过类继承达到代码重用和多态性支持也不是最理想的。 措施二:把参数类型改成接口 正如Allen Holub在《Build User Interfaces for Object-Oriented Systems》中所指出的,在面向对象编程中,代码重用真正的要点在于通过接口参数类型利用多态性,而不是通过类继承: “……我们通过对接口而不是对类编程达到代码重用的目的。如果某个方法的所有参数都是对一些已知接口的引用,那么这个方法就能够操作这样一些对象:当我们编写方法的代码时,这些对象的类甚至还不存在。从技术上说,可重用的是方法,而不是传递给方法的对象。” 在“措施一”得到的结果上应用Holub的看法,当某块代码能够编写为独立的全局过程时,只要把它所有类形式的参数改为接口形式,我们就可以进一步提高它的可重用能力。经过这个改动之后,过程的参数可以是实现了该接口的所有类的对象,而不仅仅是原来的类所创建的对象。由此,过程将能够对可能存在的大量的对象类型进行操作。
|
·Java程序开发过程中异常处理的特殊情况 (11-11) ·微软通过Java推广MSN工具栏 (11-11) ·Java学习过程中应该深入理解的一些重点 (10-29) ·初学者必读:将JAVA编译为EXE的几种方法 (10-29) ·新手入门:介绍Java学习的一些主线思路 (10-28) 热议文章·小灵通与WiMAX频段或将腾位为TD (11-12) 评:只不过是中国移动对中国电信重组后的一招罢了,看中国电信集团高官如何应对! ·微软将亮相08通信展 电信重组利好抵御金融风 (11-11) ·通信终端业营收降两成 (11-10) ·传WCDMA招标结果揭晓 联通悄然部署3G试验网 (11-10) ·WCDMA绝不是新联通的救命稻草 (11-7) ·宽带市场不宜“非对称管制” (11-5) ·重组已完成 中移动寡头地位仍难撼 (11-5) ·中国电信CDMA曝5大规划 (11-4) ·种基于NS的网络视频QoS分析方法 (11-12) ·移动软交换IP化的第三次浪潮 (11-12) ·如何制作Windows XP sp3免激活原版操作系统 (11-12) ·Web内容安全过滤设备应注重多层次管理功能 (11-12) ·专家谈:网络时代企业将面临的问题与挑战 (11-12) ·通过Linux操作系统引导CD排除服务器故障 (11-12) ·次贷危机下,LTE是个新谎言 (10-29) ·全球通信业面临金融危机冲击 对中国企业或利大于弊 (10-27) ·宽带市场不宜“非对称管制” (9-17) ·从校园竞争看重组后电信运营商竞争力对比 (9-8) |
|||||||||||||||
|