java - 在两个不具有相似功能的类之间进行选择的适当设计模式

标签 java design-patterns

我有 2 个类 Workflow1.java 和 Workflow2.java。在类 Selection.java 中,我希望能够在将 2 个类之一实例化为静态成员之间进行选择,但是我无法实现工厂模式,因为 Workflow1 和 Workflow2 不能是子类,因为它们的方法不相同。尽管它们实现了相同的最终结果,但它们是通过执行完全不同的操作来实现的。有适合这种场景的设计模式吗?

示例:如果类是 WalkHelper.java 和 DriveHelper.java,则每个类所需的方法完全不同,但您想要实现的目标是相同的 - 到达目的地。我还没有创建 walk() 和drive() 作为方法,因为 WalkHelper.java 已存在于我们的代码库中,并且我将 DriveHelper.java 添加到其中。

最佳答案

听起来你仍然可以使用 Factory 模式,但你可能必须使用 Adapter 来使它们相等......如果不了解更多,这是一个相当困难的事情要回答的问题。

interface IFactory {
  void run();
  String getResult();
}

class Workflow1Adapter implements IFactory {
  Workflow1 wf1 = new Workflow1();

  public void run() {
    wf1.doSomething();
  }

  public String getResult() {
    wf1.doAnother();
  }
}

class Workflow2Adapter implements IFactory {
  Workflow2 wf2 = new Workflow2();

  public void run() {
    wf2.doThatThing();
  }

  public String getResult() {
    wf2.doReturn();
  }
}

class Workflow1 {
  public void doSomething() {}
  public String doAnother() {}
}

class Workflow2 {
  public void doThatThing() {}
  public String doReturn() {}
}

关于java - 在两个不具有相似功能的类之间进行选择的适当设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47524085/

相关文章:

java - 定位元件故障

java - 搜索多个数值字段 Lucene

model-view-controller - 谁负责下一个View?

android - 使用 Retrofit 时如何构建 API

asp.net-mvc - MVVM View 模型与 MVC View 模型

java - 为什么 TreeMap.values() 不反射(reflect)元素最初添加的顺序?

java - java 无法识别else语句

c++ - 寻找适用于 C++ 的设计模式

java - "Android SDK Manager"打开时关闭

Java:构建器模式、继承和泛型