【发布时间】:2017-11-28 04:33:56
【问题描述】:
我有 2 个类 Workflow1.java 和 Workflow2.java。在类 Selection.java 中,我希望能够在将两个类之一实例化为静态成员之间进行选择,但是我无法实现工厂模式,因为 Workflow1 和 Workflow2 不能是子类,因为它们的方法不同。尽管它们实现了相同的最终结果,但它们是通过完全不同的操作来实现的。这种场景有设计模式吗?
示例:如果类是 WalkHelper.java 和 DriveHelper.java,您在每个类中需要的方法完全不同,但您要实现的目标是相同的 - 到达目的地。我还没有创建 walk() 和 drive() 作为方法,因为 WalkHelper.java 已经存在于我们的代码库中,我正在向其中添加 DriveHelper.java。
【问题讨论】:
-
如果
Workflow1.java和Workflow2.java有不同的方法集,您打算如何从将使用这两个类中的任何一个的客户中抽象出来?您能详细说明一下您的要求吗? -
@Indra 有一个很好的观点,这应该是你要走的路,但是,如果你必须与众不同,你可以构建一个对象工厂,然后在每次你想用它做任何事情时强制转换它它。您绝对应该考虑 Indra 的 cmets
-
@Indra 包含条件检查的类将被客户端调用以执行操作。客户端不直接与 Workflow1.java 和 Workflow2.java 交互。它们包含为用户提供最终结果的逻辑。
-
@laksmiiragavarapu 正如人们已经提到的,您应该使用适配器模式和工厂模式。适配器模式将一个类转换为客户期望的另一个接口/类。
-
@IndraBasak 我会尝试解决方案并更新
标签: java design-patterns