Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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_Oop_Design Patterns - Fatal编程技术网

Java 对另一个类执行操作的类

Java 对另一个类执行操作的类,java,oop,design-patterns,Java,Oop,Design Patterns,我有一个类,它本质上是数据库中大型数据对象的包装器。看起来像这样: public class ServerWrapper { private DataObject object; public ServerWrapper(DataObject object) { this.object = object; } public void doAThing1() { getSomeStuff(); // do stuf

我有一个类,它本质上是数据库中大型数据对象的包装器。看起来像这样:

public class ServerWrapper {
    private DataObject object;

    public ServerWrapper(DataObject object) {
        this.object = object;
    }

    public void doAThing1() {
        getSomeStuff();
        // do stuff that modifies this object
    }

    public void doAThing2() {
       getSomeStuff();
       // do other stuff that modifies this object
    }

    private List<> getSomeStuff();
}
看起来很臭;它与ServerWrapper紧密耦合(ServerWrapper调用它,它调用ServerWrapper),另外它需要对给定的对象执行一些操作(这是错误的),或者制作一个副本,执行这些操作,然后返回副本

真的,我想我要找的是一组局部类,只是为了让这个类中的怪物更易于管理;但我使用的是Java,它不支持这一点

有没有一些标准的做法来打破这样一个大类?提前谢谢

编辑:
包装的要点是向数据库对象添加服务器端功能。例如,此对象需要“过期”。这需要将所有关联获取到数据库表,然后对对象和那些关联进行多次验证,然后在对象及其关联中设置一组字段,然后对对象和所有这些关联调用数据库更新。将所有这些代码放在ServerWrapper中对我来说是有意义的,但是有一些相当复杂的操作需要执行,因此类本身变得相当大。

但是它不需要与
ServerWrapper紧密耦合。

public class ThingDoer1() {
    public void doAThing1(List<> theList) {
        // do the thing to object
    }
public void doAThing1() {
    new ThingDoer1().doAThing1(getSomeStuff());
}
public void doAThing1() {
    new ThingDoer1(getSomeStuff()).doAThing();
}
我会更进一步,也许:

public class ThingDoer1() {
    private final List<> theList;
    public ThingDoer1(List<> theList) {
        this.theList = theList;
    }
    public void doAThing() {
        // do the thing to object
    }
}

这更像是一个问题。

你问得太笼统了。这个包装纸的用途是什么?它更像一个装饰师吗?适配器?你为什么需要它?@chrylis谢谢你,请看我的编辑。这类东西听起来像是一个非常复杂的类,没有作为装饰师的建筑业务。我通常会说,如果要手动使对象过期,那么将过期过程作为一个单独的服务编写,然后按照某种计划启动它。@Evan所以这个getSomeStuff()被许多doThing()方法使用??我在spring应用程序中也做过类似的事情。。。我制作了一个名为IComponentBA的接口,并在我的控制器中列出了这些对象的列表,以便在需要的时候,它们可以被激怒并执行。。。。
public void doAThing1() {
    new ThingDoer1(getSomeStuff()).doAThing();
}