Java 一个类中的所有方法还是多态性实现?
以下是理解问题所需的知识:Java 一个类中的所有方法还是多态性实现?,java,polymorphism,implementation,Java,Polymorphism,Implementation,以下是理解问题所需的知识: 我想将一个名为SCL的类连接到一个名为Region的类 现在,我有许多不同的方法来连接的实例 这两门课 写这篇文章就是Java 没有使用全局变量 因此,我可以创建几个利用多态性的类(大约9个),但每个类只有一个名为connect(…)的方法,其中包含许多不同的参数列表。我想这叫做函子类 例如,类“scltoregionoverlapircleconnect”将有一个如下所示的connect方法 public void connect(SCL scl, Region r
public void connect(SCL scl, Region region, int radius, int overlapPercentage) {...}
而类“regionRegionNonOverlappSquareConnect”将有一个如下所示的连接方法
public void connect(Region bottomRegion, Region topRegion, int sideLength) {...}
或
我只需要创建一个名为ConnectionTypes的类,就可以有9个不同的方法,每个方法都有不同的方法签名
每种实现的优缺点是什么?谢谢 如果使用多态性,则在实例化SCL对象时确定连接方法。这有意义吗?或者,一个SCL班级是否可以通过各种不同的方式与该地区联系起来?在这种情况下,多态性就没有意义了。我们没有任何信息的一个重要方面是
connect(…)
方法的参数会发生什么变化。它们是否需要存储在SCL类中,在这种情况下,具有不同参数的多态性可能再次有意义,以便每个类都可以存储适当的参数
另一个想法是,将一个SCL类连接到一个区域的行为是否真的是SCL类的一种方法,或者它应该位于其他地方?我建议您使用第二种方法
除了必须重新初始化全局变量以避免出现问题之外,我看不到任何缺点。让我澄清两件事:
- 您考虑的是命令模式,而不是函子模式。区别在于后者也有一个检索返回值的方法,但是您的
方法无效connect
- 函子模式对于每个
方法都不会有不同的签名;相反,每个具体类都有专用的参数设置器(特定于您想要连接的特定方式)和相同的、无参数的connect
方法。后者将是公共public void connect()
超类型中声明的唯一方法Connect
缺点:您将拥有更多的代码,而封装纯粹的功能会大大降低代码的可理解性。使用第二种解决方案时,可扩展性/可维护性/可读性处于相当大的危险中。@Florisveleman-与第一种解决方案相比,这一点并不多,我会想,一种连接方式和另一种连接方式的区别是什么?它们的行为是否不同,参数是否不同,或者只是标签是否不同?如果连接的结果是某种类型的连接对象,那么不同的连接方式是否会产生不同类型的连接对象?您不需要详细说明,但您可以用9种或更多的方式连接这两个类似乎有些奇怪。也许你应该重新考虑每件事。
连接
?你能详细说明一下吗。。