0

我有一个特定的要求,例如:

serviceUtility.invokeService(requestObj)

上述方法采用requestObj,它并不总是同一个对象。它可以包含任何对象,具体取决于功能。但是,invokeService一般的方法必须基于对象来处理请求。我想自动化,以便它动态识别对象并对其采取行动。这意味着serviceUtility类中的实现适用于任何类型的对象。因为每个人的逻辑都是一样的。现在我正在检查对象类型并执行逻辑。

4

3 回答 3

1

根据您的编程语言,您可以使用反射动态地执行此操作(例如在 Java/C# 中);但它会很混乱,很难让它完美地工作。

如果可能,您应该重新组织您的代码并创建一个公共接口,所有相关类都实现该接口。然后你确定他们有正确的方法并且可以调用它们而不必发现它们的确切类型

于 2012-05-21T10:39:30.860 回答
1

因为每个人的逻辑都是一样的

在这种情况下,您需要使用通用编程。例如,在 Java 中:

public <T extends Request> void invokeService(T object) {
  object.run();
}

后来,在客户端:

utility.invokeService(new FooRequest());
utility.invokeService(new BarRequest());
于 2012-05-21T20:22:18.753 回答
0

您正在寻找名为“工厂方法”的创建设计模式。

http://www.oodesign.com/factory-method-pattern.html

于 2012-05-21T10:42:23.917 回答