java - 我需要使用哪种设计模式 Java 应用程序

标签 java design-patterns

目前我有 3 个类,其中大多数变量都是相同的。所有变量都有 getter 和 setter。我需要根据提供的数据类型变量Year创建类的对象,并在十多个方法中传递该对象。让我们举个例子。

我们有三个类ClassAClassBClassC。如果我们过了2017年,那么我需要A 类对象。如果我们通过了2016年份,那么我需要B类对象,而对于所有其他年份,我们需要C类对象

然后我们需要在所有 10 个方法中传递该对象。 让我们以两种方法为例。

public void method1(int a, int b, object of classA/B/C).

public void method2(int a, int b, object of classA/B/C).

这两种方法都作用于对象并在对象中设置一些变量。

但有一个问题是我不想在ClassA,ClassB,ClassC扩展类实现接口(interface),因为< strong>ClassA、ClassB、ClassC 是由 XSD 文件制成的,我不想更改这些类。

请让我知道最适合我的要求的设计模式。

最佳答案

要根据过去的年份创建任何类 A/B/C 的实例,您可以选择工厂模式。这应该是非常简单的。

你的问题的第二部分是将类 A、B、C 的对象传递给你的一些方法。这可以通过两种方式完成。

如果您的类是相关的,即它们实现了一些公共(public)接口(interface)或抽象类,您可以编写您的方法来接受接口(interface)或抽象类,即

public class A implements ICommonInterface {}
public class B implements ICommonInterface {}
public class C implements ICommonInterface {}

public void method1(int a, int b, ICommonInterface object){}

或者他们扩展了一些公共(public)类

public class A extends CommonClass {}
public class B extends CommonClass {}
public class C extends CommonClass {}


public void method1(int a, int b, CommonClass object){}

如果不是这种情况,您可以使您的方法接受泛型类型

public void method1(int a, int b, T object){}

由于所有类都具有相同的变量,因此使用这两种方法都不会有任何问题。

关于java - 我需要使用哪种设计模式 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47921235/

相关文章:

java - 按位或未产生预期结果

java - 在kony中链接JavaConnector时发生ClascastException

java - 在 Windows 上运行 JAVA 8 jar,无需命令提示符

java - 在 doInBackground 中使用 OkHttpClient 时应用程序崩溃

javascript - 正确的 JavaScript 6 类型用于结构体的 C# 等效项

java - 这是适配器模式的正确实现吗?

java - 需要澄清java垃圾收集复制收集器

asp.net-mvc - ASP.Net MVC 2 验证是否需要在模式和使用方面进行更多思考?

c# - 具有公共(public)(单实例)构造函数的单例

haskell - 我在哪里可以学习高级 Haskell?