當我想要稍後保存在磁盤上的數據結構時,我永遠不知道如何正確建模情況。CompilationUnit對象是否有保存自己並編譯到磁盤的方法?
例如,我目前正在研究一個小型代碼生成器。總的想法是,我會在某個地方想要存儲一個類的合格名稱及其相關內容,我稍後想要將.java文件保存到磁盤並通過javac
進行編譯。目前還不完全清楚,我會同時執行這兩個操作,即以.java格式保存到磁盤,並通過javac
作爲一個操作進行編譯。我想有時候我可能只想將.java文件寫入磁盤而無需編譯。
class CompilationUnit {
String qualifiedName;
String contents;
}
現在,我的問題是如何建模。我應該有一個CompilationUnit
作爲參數IFileSystem
和IJavaCompiler
作爲參數,所以每次我有「在我的手」CompilationUnit
我有一切需要做這兩個動作,或者我應該嘗試保持該編譯邏輯以外的類,作爲CompilationUnit
只是一個數據對象?
一方面,這個OO信念應該保持同一個對象上的狀態和行爲,這將有利於保持限定的名稱及其內容以及將編譯單元寫入磁盤並編譯它的可能性。
儘管這一事實,我就忍不住感到與具有CompilationUnit
同時服用IFileSystem
和IJavaCompiler
依賴的想法不舒服,雖然我這是一個有點難以解釋爲什麼它是如此。我的(理想主義者?)的直覺是數據對象應該很容易實例化,並且在那個視圖中,每當我想要存儲一個限定名稱及其一個限定名稱時,它不得不通過IFileSystem
和IJavaCompiler
內容一起。這意味着負責生成這些數據的人也必須能夠訪問IFileSystem
和IJavaCompiler
,這很奇怪。
我不確定我是否真的回答了我自己的問題。
該系統將進行測試,因此正確處理依賴關係問題非常重要。
謝謝!
是的。感謝我確認我的暫停。 – 2012-02-16 20:11:12