我一直在尋找可能在嵌套類中獲得的優勢。關於如何做到這一點,有很多例子,但我沒有發現關於在另一個班級中宣佈班級的原因。我甚至諮詢了我剛到的「代碼完成」,但是那裏也沒有提到。我可以看到它難以閱讀的缺點。嵌套類的原因是什麼
1
A
回答
11
通常,嵌套類僅用於支持其容器類的功能,並且本身沒有可行性。例如,它可以用來收集大量參數用於初始化,以保持主類的構造器可管理;或者它可以繼承定義支持主類的專用集合。
從語義上講,對於一個單獨的類沒有區別,但是嵌套會發送一個明確的消息,指出該類不能獨立使用。
+1
「[...]但嵌套發送一個明確的消息,該類自己沒有意義。」是我認爲的重要一點。 +1! – Gregor 2009-04-18 16:05:35
0
使用它們,如果父類需要一些模型來工作,但不是所有其他類。因此,一些數據的內部表示/助手。
0
我通常使用它們聲明爲private,所以它們可以用於只在外部類中需要的某些funcionality,保持名稱空間不需要輔助類。
0
從我的角度來看,嵌套類不是強制性的。我通常只在一個類中嵌套一個類,只是與一個特定的類有關。
2
有與製作嵌套類結束幾個設計決定:
-
你想更明確的兩級之間的關係
- ;一個 。名字更明確的兩個班在同一個命名空間
- 上下文相關的類如上下文,服務一流的封閉頂級嵌套類,使這種依賴更清晰「這些東西去togheter」
- 避免命名空間污染
- 減少源文件的數量
所以有嵌套類後面兩個原則:依賴和更好地組織
0
您可能會使用嵌套類對外部類的實現中涉及的概念進行建模,但與外部類緊密關聯,以至於嵌套類在任何其他上下文中都無法使用。嵌套類具有可見性,並且可能明確依賴於不屬於其公共API的外部類的詳細信息。
一種常見模式是嵌套類實現公共接口,外部類通過返回類型爲公共接口的方法公開嵌套類的實例。迭代器模式就是這樣的一個例子。
相關問題
- 1. 什麼是嵌套類
- 2. 什麼是嵌套類型?
- 3. 是什麼原因
- 4. 子類化NSArrayController的原因是什麼?
- 5. BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE的原因是什麼?
- 6. 'System.IO.IsolatedStorage.IsolatedStorageException'的原因是什麼?
- 7. RejctedExecutionException的原因是什麼?
- 8. 什麼是UnsatisfiedLinkError的原因?
- 9. UnsupportedClassVersionError的原因是什麼?
- 10. ChangeConflictException的原因是什麼?
- 11. PlatformID.MacOSX是什麼原因?
- 12. java.lang.reflect.InvocationTargetException:這是什麼原因?
- 13. 在Maven項目中,嵌套或平面目錄佈局的原因是什麼?
- 14. 如何分辨什麼是嵌套類
- 15. 套接字復位的原因是什麼
- 16. Python中嵌套異常的嵌套原因
- 17. 是什麼差距的原因的DIV
- 18. 我的NullPointerException的原因是什麼?
- 19. 這個輸出的原因是什麼?
- 20. @ font-face失敗的原因是什麼?
- 21. 這個nullPointerException的原因是什麼?
- 22. JasperException的可能原因是什麼
- 23. Spring STS掛起的原因是什麼?
- 24. fsockopen()錯誤的原因是什麼?
- 25. 這是什麼錯誤的原因:
- 26. 使用OpenJDK的原因是什麼?
- 27. 什麼是死鎖的常見原因?
- 28. 導致ServiceActivationException的原因是什麼?
- 29. 這個NoMethodError的原因是什麼?
- 30. 我的jQuery.ajax()parsererror是什麼原因?
這個問題可以做出語言不可知的? – dfa 2009-04-18 16:16:23