Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在执行业务功能时收集数据的对象模式_Java_Design Patterns - Fatal编程技术网

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

Java 在执行业务功能时收集数据的对象模式,java,design-patterns,Java,Design Patterns,我有一个执行业务函数的类,入口点方法调用多个方法 public class Tool { public void runTool() { methodA(); methodB(); methodC(); printToolSummary(); } } 调用的每个方法method*都执行一个特定的子函数,我想将每个方法中感兴趣的结果/属性收集到一个摘要对象中。这些method*方法返回的不是单个

我有一个执行业务函数的类,入口点方法调用多个方法

public class Tool
{
     public void runTool()
     {
         methodA();
         methodB();
         methodC();
         printToolSummary();
     }
}
调用的每个方法
method*
都执行一个特定的子函数,我想将每个方法中感兴趣的结果/属性收集到一个摘要对象中。这些
method*
方法返回的不是单个值


我想到了一个包含所有感兴趣的属性的单一对象,将此对象传递给每个方法并让该方法设置属性,但不知何故,使用可变对象听起来并不正确,因为无法阻止methodA更新不应该更新的属性,还是我担心得太多了?

使用一个包含每个方法的子类的复杂对象怎么样。例如:

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;
}

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

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;
}

如果您担心方法会触及对象的某些不应该触及的部分,那么您传递给这些方法的对象应该实现多个接口,每个接口只公开希望acting方法触及的属性

所以methodA可以预期一个类型为a的类,methodB可以预期一个类型为B的类,其中a和B是接口


否则,您的方法实际上没有什么问题,这是很常见的。

如果您担心方法会触及对象的某些不应该触及的部分,那么您传递到方法中的对象应该实现多个接口,每个接口只暴露您希望代理方法触及的属性触摸

所以methodA可以预期一个类型为a的类,methodB可以预期一个类型为B的类,其中a和B是接口


否则,您的方法实际上没有什么问题,这是很常见的。

不确定您担心的是什么-“读取一致性视图”可能是数据库术语。为什么不构建一个摘要对象,然后在显示的级别上填充它,并使用任何get函数的结果。不确定您担心的是什么-“读取一致性视图”可能是数据库术语。为什么不构建一个summary对象,然后在显示的级别上用get函数的结果填充它呢。