Java 基于条件返回我的子类或父类的设计模式

Java 基于条件返回我的子类或父类的设计模式,java,design-patterns,Java,Design Patterns,是否有一种设计模式根据条件返回子类或父类 情况是: 我有一个基本类和一个扩展基本类的复杂类。我需要的是根据用户需求返回基本类或复杂类。我能够使用基本的if-else条件实现is,但觉得这似乎不符合逻辑。如果我的类可以有这样的结构,那么必须有一种适当的方法来实现这一点 public class SimpleClass {} public class ComplexClass extends SimpleClass {} public class MoreComplexClass extends

是否有一种设计模式根据条件返回子类或父类

情况是:

我有一个基本类和一个扩展基本类的复杂类。我需要的是根据用户需求返回基本类或复杂类。我能够使用基本的if-else条件实现is,但觉得这似乎不符合逻辑。如果我的类可以有这样的结构,那么必须有一种适当的方法来实现这一点

public class SimpleClass {}

public class ComplexClass extends SimpleClass {}

public class MoreComplexClass extends ComplexClass {}
接着


如果我的问题是错误的,如果我应该改变我创建类的方式。请指导。

您描述的内容听起来像工厂方法模式。请参见位于

的Java示例实现,您所描述的内容听起来像工厂方法模式。查看位于的Java示例实现,我认为您应该更好地使用
工厂方法
模式,而不是
抽象工厂
。看,例如这里

我认为你最好使用
工厂方法
模式,而不是
抽象工厂
。例如,请看这里

这些任务通常通过使用模式来实现。在您的情况下,它可能类似于:

public class SimpleClass{
    public static SimpleClass getMyClass(String cond1/*you conditions as parameters here*/){
      if ("case1".equals(cond1))
          return new ComplexClass();
      //...
      return new SimpleClass();
    }
}

这类任务通常通过使用模式来实现。在您的情况下,它可能类似于:

public class SimpleClass{
    public static SimpleClass getMyClass(String cond1/*you conditions as parameters here*/){
      if ("case1".equals(cond1))
          return new ComplexClass();
      //...
      return new SimpleClass();
    }
}

使用工厂模式动态返回运行时对象。你的问题没有真正意义。在什么情况下,您希望返回一个或另一个?关于为什么您不希望您询问的行为的有趣解读如下:,更准确地说,第一个答案这可以使用工厂方法模式实现。请注意,大多数设计模式不受编程语言的限制。这里的要求是,我需要根据用户的输入为他们提供不同的形式。因此,如果他们要求一个简单的表格,我会给他们一个简单的表格。如果他们需要复杂表单(它将包含比简单表单更多的属性),我将向他们展示复杂表单。所以它就像是用户可以配置表单一样。他们只填写他们想要的内容,使用工厂模式动态返回运行时对象。你的问题没有真正意义。在什么情况下,您希望返回一个或另一个?关于为什么您不希望您询问的行为的有趣解读如下:,更准确地说,第一个答案这可以使用工厂方法模式实现。请注意,大多数设计模式不受编程语言的限制。这里的要求是,我需要根据用户的输入为他们提供不同的形式。因此,如果他们要求一个简单的表格,我会给他们一个简单的表格。如果他们需要复杂表单(它将包含比简单表单更多的属性),我将向他们展示复杂表单。所以它就像是用户可以配置表单一样。他们只填写他们想要的+1表示精彩链接+1表示精彩链接