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