建网站需要营业执照吗,如何制作局域网站,怎么做网站促收录,如何注册小程序商家提高java代码可重用性有哪些方法措施#xff0c;以下就讲解了三种关于提高java代码可重用性的措施#xff0c;一起来了解一下吧~
改写类的实例方法
通过类继承实现代码重用不是精确的代码重用技术#xff0c;因此它并不是最理想的代码重用机制。继承总是带来一些多余的方法…提高java代码可重用性有哪些方法措施以下就讲解了三种关于提高java代码可重用性的措施一起来了解一下吧~
改写类的实例方法
通过类继承实现代码重用不是精确的代码重用技术因此它并不是最理想的代码重用机制。继承总是带来一些多余的方法和数据成员它们总是使得重用类里面某个方法的代码复杂化。
另外派生类对父类的依赖关系也使得代码进一步复杂化对父类的改动可能影响子类修改父类或者子类中的任意一个类时我们很难记得哪一个方法被子类覆盖、哪一个方法没有被子类覆盖最后子类中的覆盖方法是否要调用父类中的对应方法有时并不显而易见。
任何方法只要它执行的是某个单一概念的任务就其本身而言它就应该是首选的可重用代码。为了重用这种代码我们必须回归到面向过程的编程模式把类的实例方法移出成为全局性的过程。
为了提高这种过程的可重用性过程代码应该象静态工具方法一样编写它只能使用自己的输入参数只能调用其他全局性的过程不能使用任何非局部的变量。这种对外部依赖关系的限制简化了过程的应用使得过程能够方便地用于任何地方。
当然由于这种组织方式总是使得代码具有更清晰的结构即使是不考虑重用性的代码也同样能够从中获益。
在Java中方法不能脱离类而单独存在。为此我们可以把相关的过程组织成为独立的类并把这些过程定义为公用静态方法在组织和封装对象数据成员的过程中类起到了不可或缺的作用类通过多重接口实现多态性的能力本身也带来了卓越的代码重用支持。
选择最简单的参数接口类型
描述参数对象要求的接口越简单其他类实现该接口的机会就越大由此其对象能够作为参数使用的类也越多。从下面这个例子可以很容易地看出这一点
static public boolean areOverlapping(Window window1, Window window2) {...}
这个方法用于检查两个窗口是否重叠。如果这个方法只要求从参数获得两个窗口的矩形坐标此时相应地简化这两个参数是一种更好的选择有些时候可能会出现描述参数需求的接口拥有太多方法的情况。
此时我们应该在全局名称空间中定义一个新的公共接口供其他面临同一问题的代码重用。当我们需要象使用C语言中的函数指针一样使用参数时创建唯一的接口描述参数需求是最好的选择。例如假设有下面这个过程
static public void sort(List list, SortComparison comp) {...}
该方法运用参数中提供的比较对象comp通过比较给定列表list中的对象排序list列表。sort对comp对象的唯一要求是要调用一个方法进行比较因此SortComparison接口不能在其他地方重用。
把参数类型改成接口
在面向对象编程中代码重用真正的要点在于通过接口参数类型利用多态性而不是通过类继承我们通过对接口而不是对类编程达到代码重用的目的。如果某个方法的所有参数都是对一些已知接口的引用那么这个方法就能够操作这样一些对象当我们编写方法的代码时这些对象的类甚至还不存在。从技术上说可重用的是方法而不是传递给方法的对象。
例如让我们假设有这样一个方法
static public boolean areAnyOverlapping(Collection rects) {...}
该方法用于检查给定集合中的任意矩形对象是否重叠。在这个方法的内部当我们用循环依次访问集合中的各个对象时如果我们不能把对象cast成为Rectangular之类的接口类型又如何能够访问对象的矩形区域呢唯一的选择是把对象cast成为它特有的类形式它意味着方法必须事先知道它所操作的对象类型从而使得方法的重用只限于那几种对象类型。
总而言之本文三个措施适合于改造现有的、按照面向对象惯例编写的代码。 为了让学习变得轻松、高效今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群928505736