我有一個本質上是數據庫上的大型數據對象的包裝類。看起來像這樣:爲另一個類做事情的類
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();
}
這是問題:有很多很多「doathing」方法。其中一些非常大。另外,它們中的很多還在ServerWrapper中使用其他私有方法。理想情況下,我想將這些公共方法分解爲他們自己的類,如ThingDoer1,ThingDoer2,但我不知道這樣做的最佳方式。
事情是這樣的:
public class ThingDoer1{
public void doAThing1(ServerWrapper wrapper) {
wrapper.getSomeStuff();
// do the thing to wrapper
}
似乎很臭;它與ServerWrapper(ServerWrapper調用它並調用ServerWrapper)緊密耦合,並且它需要對其給定的對象(這是壞的)執行任何操作,或者創建副本,執行操作,然後返回副本。
真的,我想我正在尋找的是一組局部類的,只是爲了一類更易於管理的這個怪物;但我使用的是Java,但不支持它。
有沒有一些標準的做法來打破這樣的大班?提前致謝!
編輯: 包裝紙的要點是服務器側功能添加到數據庫對象。例如,這個對象需要「過期」。這需要獲取數據庫表的所有關聯,然後對對象和這些關聯進行多次驗證,然後在對象及其關聯中設置一堆字段,然後在對象和所有這些關聯上調用數據庫更新。將所有代碼放在ServerWrapper中對我來說是有意義的,但是有幾個相當複雜的操作,比如需要發生,所以類本身變得相當大。
你的要求太籠統。這個包裝的目的是什麼?它更像一個裝飾者嗎?一個適配器?你爲什麼需要它? – chrylis
@chrylis謝謝,請參閱我的編輯。 – Evan
這種事情聽起來像一個非常複雜的類,沒有作爲裝飾者的建築業務。我通常會說,如果您手動過期對象,則將過期過程作爲單獨的服務編寫,然後按某種計劃啓動。 – chrylis