上帝對象

在 - { zh - hans: 面向對象編程; zh - hant: 物件導向程式設計 } - 領域中, 一個 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - ( God object ) 是一個瞭解過多或者負責過多的 - { zh - hans: 對象; zh - hant: 物件 } - 。 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - 是反面模式的一個例子 。 - { zh - hans: 結構化編程; zh - hant: 結構化程式設計 } - 背後的基本概念是一個大型的問題應該被分解成爲多個較小的問題中 （ 分而治之的策略 ） 並且針對每個較小的問題提出解決方案 。 當每個小問題都得到解決後 ， 大問題本體就得到了解決 。 因此 - { zh - hans: 對象; zh - hant: 物件 } - 應該知道的一切就是它本身 。 類似的 ， - { zh - hans: 對象; zh - hant: 物件 } - 應該解決的問題是它所屬的問題 。 基於 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } -- { zh - hans: 編寫; zh - hant: 撰寫 } - 的 - { zh - hans: 代碼; zh - hant: 程式碼 } - 並不遵從上述的方式 。 取而代之的是 - { zh - hans: 程序; zh - hant: 程式 } - 的整體功能都被 - { zh - hans: 編程; zh - hant: 撰寫 } - 到一個單一的 " 瞭解全部 " 的 - { zh - hans: 對象; zh - hant: 物件 } - 當中 ， 這個 - { zh - hans: 對象; zh - hant: 物件 } - 維護了整個 - { zh - hans: 程序; zh - hant: 程式 } - 的大部分 - { zh - hans: 信息; zh - hant: 資訊 } - 並且提供了操作數據的大部分方法 。 所以這個 - { zh - hans: 對象; zh - hant: 物件 } - 持有過多的數據以及負責過多的方法 ， 它在 - { zh - hans: 程序; zh - hant: 程式 } - 中的角色就如同上帝一般 。 不同於 - { zh - hans: 編寫; zh - hant: 撰寫 } - 直接在彼此之間進行交互的 - { zh - hans: 對象; zh - hant: 物件 } - ， 其他 - { zh - hans: 程序; zh - hant: 程式 } - 中的 - { zh - hans: 對象; zh - hant: 物件 } - 都依賴於這個 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - 獲得 - { zh - hans: 信息; zh - hant: 資訊 } - 以及交互 。 由於 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - 被過多的其他 - { zh - hans: 代碼; zh - hant: 程式碼 } - 所引用 ， 相比一個進行了均勻切分的 - { zh - hans: 程序; zh - hant: 程式 } - 而言維護變得更加的困難 。 在 - { zh - hans: 過程化編程語言; zh - hant: 程序式程式設計 } - 中沒有使用 - { zh - hans: 子程序; zh - hant: 副程式 } - 或者過多的使用了 - { zh - hans: 全局變量; zh - hant: 全域變數 } - 進行 - { zh - hans: 信息存儲; zh - hant: 儲存資訊 } - ， 都是在 - { zh - hans: 面向對象編程; zh - hant: 物件導向程式設計 } - 中的 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - 的一個類似物 。 創造一個 - { zh - hans: 上帝對象; zh - hant: 上帝物件 } - 通常都被認爲是一個不好的 - { zh - hans: 編程實現; zh - hant: 程式設計實作 } - ， 這種技術偶爾會在緊耦合的 - { zh - hans: 編程; zh - hant: 程式設計 } - 環境中 （ 如微處理器 ） 被使用 。 在這些環境中相較於維護以及 - { zh - hans: 編程; zh - hant: 程式設計 } - 的優雅而言 ， 微小的性能提升以及控制集中是更加重要的 。