千家信息网

如何提高Java代码可重用性

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了如何提高Java代码可重用性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。措施一:改写类的实例方法通过类继承实现代码
千家信息网最后更新 2026年11月03日如何提高Java代码可重用性

这篇文章主要介绍了如何提高Java代码可重用性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。



  措施一:改写类的实例方法

  通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的代码重用机制。换句话说,如果不继承整个类的所有方法和数据成员,我们无法重用该类里面的单个方法。继承总是带来一些多余的方法和数据成员,它们总是使得重用类里面某个方法的代码复杂化。另外,派生类对父类的依赖关系也使得代码进一步复杂化:对父类的改动可能影响子类;修改父类或者子类中的任意一个类时,我们很难记得哪一个方法被子类覆盖、哪一个方法没有被子类覆盖;最后,子类中的覆盖方法是否要调用父类中的对应方法有时并不显而易见。

  任何方法,只要它执行的是某个单一概念的任务,就其本身而言,它就应该是首选的可重用代码。为了重用这种代码,我们必须回归到面向过程的编程模式,把类的实例方法移出成为全局性的过程。为了提高这种过程的可重用性,过程代码应该象静态工具方法一样编写:它只能使用自己的输入参数,只能调用其他全局性的过程,不能使用任何非局部的变量。这种对外部依赖关系的限制简化了过程的应用,使得过程能够方便地用于任何地方。当然,由于这种组织方式总是使得代码具有更清晰的结构,即使是不考虑重用性的代码也同样能够从中获益。

  在Java中,方法不能脱离类而单独存在。为此,我们可以把相关的过程组织成为独立的类,并把这些过程定义为公用静态方法。

  例如,对于下面这个类:
  class Polygon {
  .
  .
  public int getPerimeter() {...}
  public boolean isConvex() {...}
  public boolean containsPoint(Point p) {...}
  .
  .
  }

  我们可以把它改写成:
  class Polygon {
  .
  .
  public int getPerimeter() {return pPolygon.computePerimeter(this);}
  public boolean isConvex() {return pPolygon.isConvex(this);}
  public boolean containsPoint(Point p) {return pPolygon.containsPoint(this,
  p
  );}
  .

  }

  其中,pPolygon是:
  class pPolygon {
  static public int computePerimeter(Polygon polygon) {...}
  static public boolean isConvex(Polygon polygon) {...}
  static public boolean
  containsPoint(Polygon polygon, Point p) {...}
  }

  从类的名字pPolygon可以看出,该类所封装的过程主要与Polygon类型的对象有关。名字前面的p表示该类的唯一目的是组织公用静态过程。在Java中,类的名字以小写字母开头是一种非标准的做法,但象pPloygon这样的类事实上并不提供普通Java类的功能。也就是说,它并不代表着一类对象,它只是Java语言组织代码的一种机制。

  在上面这个例子中,改动代码的最终效果是使得应用Polygon功能的客户代码不必再从Polygon继承。Polygon类的功能现在已经由pPolygon类以过程为单位提供。客户代码只使用自己需要的代码,无需关心Polygon类中自己不需要的功能。但它并不意味着在这种新式过程化编程中类的作用有所削弱。恰恰相反,在组织和封装对象数据成员的过程中,类起到了不可或缺的作用,而且正如本文接下来所介绍的,类通过多重接口实现多态性的能力本身也带来了卓越的代码重用支持。然而,由于用实例方法封装代码功能并不是首选的代码重用手段,所以通过类继承达到代码重用和多态性支持也不是最理想的。

  措施二:把参数类型改成接口

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

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

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

感谢你能够认真阅读完这篇文章,希望小编分享的"如何提高Java代码可重用性"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

代码 方法 过程 对象 参数 接口 功能 子类 篇文章 编程 多态 全局 名字 多态性 实例 成员 措施 数据 类型 静态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 南京欣网互联网络科技有限公司 云之行互联网科技 金诺互联网科技 没上市的科技互联网公司 麻工互联网科技 时间互联网络科技 长亮科技 互联网金融 人人互联网科技是培训 互联网和高科技公司 科技与互联网的利与弊 中国的互联网科技企业的崛起 常德市电业局互联网科技部 茂名市互联网科技产业园 厦门比较好的科技互联网公司 互联网公司高科技产品 皮皮虾互联网科技有限公司 南京一网一红互联网科技有限公司 米泉互联网科技专业怎么样 互联网科技快速发展优美句子 鑫亿盛互联网科技 善班互联网科技有限公司 互联网科技网站 深圳期待互联网科技 多迪互联网科技有限公司 青岛中康互联网医疗科技有限公司 重庆威客帮互联网科技 昭通互联网科技选哪家 国大互联网教育科技有限公司工作 互联网 科技节活动 微视频大赛
0