本文主要解释如何提高java代码的可重用性。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何提高java代码的可重用性”!
一、改写类的实例方法
通过类继承实现代码重用并不是一种精确的代码重用技术,因此不是最理想的代码重用机制。继承总是带来一些冗余的方法和数据成员,这总是使在类中重用方法的代码复杂化。
此外,派生类对父类的依赖使代码更加复杂:对父类的更改可能会影响子类;当修改父类或子类中的任何类时,很难记住子类覆盖了哪个方法,子类没有覆盖哪个方法。最后,子类中的重写方法是否调用父类中的相应方法有时并不明显。
任何方法,只要它执行单个概念的任务,就应该是首选的可重用代码本身。为了重用这类代码,我们必须回到面向过程的编程模式,将类的实例方法移出全局过程。
为了提高这个流程的可重用性,流程代码应该像静态工具方法一样编写:只能使用自己的输入参数,只能调用其他全局流程,不能使用任何非局部变量。这种对外部依赖的限制简化了流程的应用,并使流程可以方便地在任何地方使用。
当然,因为这种组织方式总是会让代码有更清晰的结构,即使是没有考虑复用性的代码也能从中受益。
在Java中,方法不能独立于类而存在。因此,我们可以将相关的流程组织成独立的类,并将这些流程定义为公共静态方法。类在组织和封装对象数据成员的过程中起着不可或缺的作用,类通过多个接口实现多态性的能力本身也带来了优秀的代码重用支持。
多边形类{ public int GetPerimeter()}.} public boolean isConvex(){ 0.}公共布尔contains Point(p Point){ 0.}}我们可以重写为:class polygon { public int get period(){ return p polygon。计算周长(这个);} public boolean is convex(){ return ppolygon . is convex(this);} public boolean contains Point(Point p){ return ppolygon . contains Point(this,p);}}其中,PPolygon为:p类多边形{静态公共int计算周长(多边形多边形){多边形.}静态公共布尔isconvex(多边形多边形多边形){ 0.}静态公共booleancontainsPoint(多边形多边形,点p){ 0.}}
二、选择最简单的参数接口类型
描述参数对象所需的接口越简单,其他类实现该接口的机会就越大,因此,其对象可以用作参数的类就越多。从下面的例子可以很容易地看出这一点:
静态公共布尔值重叠(窗口窗口1,窗口窗口2){ 0.}
此方法用于检查两个窗口是否重叠。如果这种方法只需要从参数中获得两个窗口的直角坐标,那么相应地简化这两个参数是更好的选择。有时候,接口中描述参数需求的方法可能太多了。
此时,我们应该在全局命名空间中定义一个新的公共接口,供面临相同问题的其他代码重用。当我们需要在C语言中使用像函数指针这样的参数时,创建唯一的接口描述参数需求是最好的选择。例如,假设有以下过程:
静态公共无效排序(列表列表,排序比较比较).}
此方法使用参数中提供的比较对象comp,通过比较给定列表中的对象来对列表进行排序。comp对象排序的唯一要求是调用一个方法进行比较,因此SortComparison接口不能在其他地方重用。
三、把参数类型改成接口
在面向对象编程中,代码重用的真正意义在于通过接口参数类型使用多态性,而不是类继承。我们通过编程接口而不是类来达到代码重用的目的。如果一个方法的所有参数都是对一些已知接口的引用,那么这个方法可以操作一些对象,这些对象的类甚至在我们编写方法的代码时都不存在。从技术上讲,可以重用的是方法,而不是传递给方法的对象。
例如,让我们假设有这样一种方法:
静态公共布尔区域重叠(集合方向){ 0.}
此方法用于检查给定集合中的任何矩形对象是否重叠。在这个方法内部,当我们通过循环依次访问集合中的每个对象时,如果我们不能使对象转换成像矩形这样的接口类型,我们如何访问对象的矩形区域?唯一的选择是让对象强制转换其唯一的类形式,这意味着方法必须事先知道它操作的对象类型,这样方法的重用就仅限于那些对象类型。
至此,相信大家对“如何提高java代码的可重用性”有了更深的理解,让我们一起来实践吧!这是网站。更多相关内容,可以去相关渠道查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/108885.html