後でディスクに保存したいデータ構造があるときに、状況を正しくモデル化する方法がわかりません。CompilationUnitオブジェクトには、それ自身を保存してディスクにコンパイルする手段が必要ですか?
たとえば、私は現在、小さなコードジェネレータに取り組んでいます。一般的な考え方は、クラスの修飾された名前と関連するコンテンツの両方を保存したいということです。後で.javaファイルをディスクに保存し、javac
でコンパイルします。 .javaとしてディスクに保存し、javac
を使ってコンパイルするだけのアクションを1つのアクションとして実行することを、私は両方の操作をしたいと思うことは完全にはっきりしていません。コンパイルせずに.javaファイルをディスクに書きたいと思うことがあります。
class CompilationUnit {
String qualifiedName;
String contents;
}
ここで私の質問はこれをモデル化する方法です。私はCompilationUnit
を引数として受け取り、IFileSystem
とIJavaCompiler
を持っていなければならないので、私が "手に持っている"たびにCompilationUnit
私は両方のアクションを行うために必要なすべてを持っているか、ちょうどデータオブジェクトであるCompilationUnit
ですか?
一方、このオブジェクト指向の考え方では、同じオブジェクトに状態と動作の両方を保持する必要があります。修飾された名前とその内容をディスクに書き込んでコンパイルする可能性があります。私はそれがそうである理由を説明するために少し難しいですが、
その事実にもかかわらず、私はしかし、CompilationUnit
は両方IFileSystem
とIJavaCompiler
依存関係を取ったの考えと不快に感じることができません。
私の(理想主義?)直観は、データオブジェクトをインスタンス化するのが簡単でなければならないということです。そのビューでは、修飾された名前を格納するたびにIFileSystem
とIJavaCompiler
を渡す必要があります。内容をまとめてつまり、このデータの生成を担当する者は誰でも、IFileSystem
とIJavaCompiler
の両方にアクセスする必要があります。これは奇妙なものです。
私は実際に私自身の質問に答えたかどうかはわかりません。
このシステムはテストされるので、依存関係の問題を正しく処理することが重要です。
ありがとうございます!
はい。私の疑惑の確認をありがとう。 –