在我的應用程序中,我有一個由主方法啓動的Controller
。控制器初始化鉤子,數據庫連接,UI,另一個連接以及其他事物。它擁有程序的大部分狀態(不,它不是Singleton)。在另一個例子中,有一個處理解釋和發送命令的機器人控制器。兩者都是相當大的文件。如何編寫一個控制器而不將其作爲上帝對象?
我已經閱讀了上帝的對象,但我真的不知道一種方法來分裂它。如果我在機器人中拆分解釋器和調度器,它將會形成一個可怕的調用鏈(類似getBot().getParser().getOutput().sendMessage(recipient, message)
)。同樣,在第一個控制器中,如果我分解了一些東西,那麼您只需擁有包含字段和一些別名實用程序方法的Data對象。分裂它們會讓事情變得更糟。在你認爲它不可維護之前,它實際上不是。我甚至沒有寫Bot控制器,但我仍然知道發生了什麼。
但問題是Bot類的長度是2000行(如果我拿出Javadoc註釋,可能會更短),Bot大概有1000行長。很多線條=上帝的對象。但是一個項目的一個或兩個核心類可以嗎?
相關:[設計一個類,使其不會成爲「上帝對象」](http://stackoverflow.com/questions/2589703/designing-a-class-in-such-a-它不會成爲上帝對象) – 2010-10-25 02:14:29
@jleedev我已經看過,但這是一個不同的問題。可以做的子對象的OP可以很好地完成這項工作,因爲它全部是內部的。然而,我的情況是面向公衆的API控制器,在我無法讓其他任何對象執行工作的情況下,需要保持簡單。 – TheLQ 2010-10-25 02:18:03