以下是您需要了解的问题:
所以我可以创建几个利用多态的类(大约9个)但是每个类只有一个名为connect(...)的方法,它有许多不同的参数列表。我认为这被称为仿函数类。
例如,类“SCLToRegionOverlapCircleConnect”将具有类似于
的连接方法public void connect(SCL scl, Region region, int radius, int overlapPercentage) {...}
而类“RegionToRegionNonOverlapSquareConnect”将具有看起来像
的连接方法public void connect(Region bottomRegion, Region topRegion, int sideLength) {...}
OR
我可以创建一个名为ConnectionTypes的类,并且只有9个不同的方法,每个方法都有不同的方法签名。
每项实施的PRO和CON是什么?谢谢!
答案 0 :(得分:0)
如果使用多态,则在实例化SCL对象时确定连接方法。那有意义吗?或者SCL课程在其生命中可以以各种不同的方式连接到该地区?在这种情况下,多态性没有意义。我们没有任何信息的一个重要方面是connect(...)
方法的参数会发生什么。它们是否需要存储在SCL类中,在这种情况下,使用不同的参数,多态性可能再次有意义,以便每个类可以存储适当的参数。
另一个想法是,将SCL类连接到一个区域的行为实际上是SCL类的一个方法,还是它应该存在于其他地方?
答案 1 :(得分:0)
我建议你使用第二个。
我看不到任何CON,除了你必须重新初始化全局变量以避免问题。
答案 2 :(得分:0)
让我说清楚两件事:
connect
方法无效。connect
方法都没有不同的签名;相反,每个具体的类都有专用的参数设置器(特定于你想要连接的特定方式)和相同的无参数public void connect()
方法。后者将是在公共Connect
超类型中声明的唯一方法。如果你愿意,我可以输入一些示例代码。
Pro:如果你的代码中的任何地方都可以使用Connect命令,而不需要知道你正在处理的9种方式中的哪一种,那么Command模式就是你的朋友。
Con:您将拥有更多代码,封装纯功能可能会降低代码的可理解性。