在执行业务功能时收集数据的对象模式

时间:2013-05-20 20:43:37

标签: java design-patterns

我有一个执行业务功能的类,并且入口点方法调用了多个方法。

public class Tool
{
     public void runTool()
     {
         methodA();
         methodB();
         methodC();
         printToolSummary();
     }
}

这些方法中的每一个method*都调用了一个特定的子函数,我想将每个方法中感兴趣的结果/属性收集到一个摘要对象中。它不是这些method*方法返回的单个值。

我在想一个包含所有感兴趣属性的单个对象,将这个对象传递给每个方法并让该方法设置属性,但不知何故,由于没有可变对象,因此听起来不正确方法来防止方法A更新它不应该的属性,还是我担心太多?

2 个答案:

答案 0 :(得分:4)

如果你担心触及对象的某些部分的方法不应该是那么你传递给方法的对象应该实现几个接口,每个接口只暴露你希望代理方法的属性触摸。

因此,methodA可以期望类型为A的类和方法B可以期望类型为B的类,其中A和B是接口...

否则你的方法没有任何问题,而且相当常见。

答案 1 :(得分:1)

如何使用包含每个方法的子类的复杂对象。例如:

public class ResultA { // some attributes for Method A }

public class ResultB { // some attributes for Method B }

public class ResultC { // some attributes for Method C }


public class Result {

    private ResultA resultA;
    private ResultB resultB;
    private ResultC resultC;
}