Java中的接口應該駐留在它們自己的目錄中嗎?或者應該將接口和它的實現放在同一個目錄(包)中?謝謝。Java界面目錄結構?
回答
接口並不特別需要他們自己的目錄。應該把它們放在有意義的地方,就像把類放在有意義的地方一樣。在很多情況下,把它們放在同一個地方也許有意義。
相同的包裝。用戶不應該知道或在意他們正在使用接口
是的。使用'I'前綴是堅果。 – 2010-01-29 18:21:20
用戶需要知道他們是否必須自己實例化這些類。 – Powerlord 2010-01-29 19:06:04
「相同的包」不回答問題。在同一個軟件包中進行單元測試是非常普遍的,因爲它正在測試它的類,但將它放在一個完全不同的目錄中。 – SyntaxT3rr0r 2010-01-29 22:09:30
我看到的一種模式是將接口放在一個基本目錄中,然後將這些實現放在一個子目錄中。
例如,接口可能會去這裏:
com.myproject.data.dao.CustomerDao (some people do ICustomerDao for interfaces, but some don't like that.)
com.myproject.data.dao.ProductDao
而且實現可能去這裏:
com.myproject.data.dao.hibernate.HibernateCustomerDao
com.myproject.data.dao.hibernate.HibernateProductDao
com.myproject.data.dao.someotherorm.SomeOtherOrmCustomerDao
etc.
這可能在某些情況下工作,可能不會在其他國家,但只是要想一想。
它根本不需要把接口放在同一目錄(包)中。如果你的界面具有公共訪問權限,那麼你可以在任何地方,任何包中導入它。
我讀過的問題(但它奇怪的公式化)不是如果接口應該在他們自己的目錄中。現在的問題是,如果你要重新創建完整的目錄結構(粗體強調的是在問題的標題),其中一個分支將只包含接口,這樣的:
pureooabstraction/
|
|_com/
|
|_example/
|
|__SomeInterface.java
|__SomeOtherInterface.java
src/
|
|_com/
|
|_example/
|
|__SomeClass.java
|__...
凡pureooabstraction/目錄結構將只包含「純抽象類」(從OO的角度來看,而不是Java的'抽象'定義),也就是Java中的接口。
「代碼」所在的細節實現細節(在OOA/OOD級別不存在)將在src/目錄中進行。
如果你的開發過程從OOA到OOD到OOP,這當然是有意義的。
不,他只是問是否將接口放在與實現相同的包中 – 2010-02-01 16:04:53
由於已經有一些很好的意見,我只想補充一點:
在一些項目中,我們即使如此遠了,我們放置所有接口到一個子項目(Maven的模塊),並實現到另一個一。通過這種方式,可以在項目的早期完全分離接口,並在項目的早期階段完成接口項目,並將其交付給其他重複使用這些接口的團隊。在每個項目中,我們使用相同的軟件包。
一般而言,我會說,你應該分開接口和它們的實現,只要你符合它,方法並不重要。
無論你想要什麼,但將接口保持在相同的包和目錄結構中是絕對沒問題的。只要看看java api。如果你選擇了任何包,你會注意到許多包含類和接口。一些接口是由同一個包中的類實現的,有些則不是。
我認爲最糟糕的做法是堅持必須爲接口有不同的目錄。我看到/ services和/ impl等目錄,這些目錄結構只會弄糟。在我目前的工作場所,我們僱傭了很多來來往往的承包商,我們的一些項目有多種類型的界面目錄。我認爲唯一一次使用單獨的目錄是有意義的,如果你打算將接口複製到其他項目中,比如EJB,但是即使如此,如果你爲接口使用共享項目,他們也可以擁有相同的包。
所以簡短的答案是,任何你想要的,但不認爲你需要分開你的類和你的接口。在許多情況下,最好將它們保存在同一個包/目錄中。
- 1. 目錄結構
- 2. 多模塊的平面目錄結構?
- 3. Wicket目錄結構
- 4. Py2exe目錄結構
- 5. 從目錄結構
- 6. PHP目錄結構
- 7. 目錄結構C++
- 8. SSL目錄結構
- 9. Laravel項目目錄結構
- 10. Golang項目目錄結構
- 11. 封裝結構和目錄結構
- 12. 包的Laravel4目錄結構
- 13. android目錄結構如何?
- 14. virtualenv和Django目錄結構
- 15. 角度目錄結構
- 16. HTACCESS - 更改目錄結構
- 17. 設置目錄。結構DSSS
- 18. 開發目錄結構
- 19. 要翻轉目錄結構
- 20. Android Maven目錄結構
- 21. REST API的目錄結構
- 22. Python TDD目錄結構
- 23. gcc的目錄結構
- 24. 多根目錄樹結構
- 25. Couchapp目錄結構,更新?
- 26. Ant和jar目錄結構
- 27. 僅解壓目錄結構
- 28. C++庫的目錄結構
- 29. MVC的目錄結構
- 30. Maven build - 目錄結構
根據佈局軟件包的邏輯,我會經常添加一個'impl'子包來指定實現,如:com.stackoverflow.questions,com.stackoverflow.questions.impl。 – Kylar 2010-01-29 17:30:30