Method参数的设计模式

时间:2012-05-21 10:29:53

标签: design-patterns

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

serviceUtility.invokeService(requestObj)

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

  

因为每个逻辑都相同

在这种情况下,您需要使用Generic programming。例如,在Java中:

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

稍后,在客户端:

utility.invokeService(new FooRequest());
utility.invokeService(new BarRequest());

答案 2 :(得分:0)

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

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