Java でファサード パターンを実装する場合、package-private 修飾子を使用して、ファサードのサブシステムを簡単に非表示にできます。その結果、ファサード/パッケージの外部からアクセスできる小さなインターフェイスしかなく、サブシステムの他のクラスは表示されません。
ご存じのとおり、C# には package-private 修飾子はありませんが、internal と呼ばれる同様の修飾子があります。ドキュメントによると、内部として定義されたクラスは、同じアセンブリ内でのみアクセスできます。
私が理解していることから、ファサードのサブシステムを物理的に隠すために、少なくとも 2 つのアセンブリ (実際には 2 つの .exe/.dll ファイルを意味します) を作成する必要があります。物理的には、クラスは a) 外部からインスタンス化できず、b) ファサードの外部のインテリセンスによって表示されないことを意味します。
- internal キーワードが効果を発揮するように、小さなプロジェクトを 1 つの .exe と 1 つの .dll (ファサード用) に分割する必要がありますか? 私のファサードのサブシステムは 2 つのクラスのみで構成されており、独自の .dll はやり過ぎのようです。
- はいの場合、Visual Studio でファサードを独自のアセンブリにアウトソーシングするベスト プラクティスの方法は何ですか?
誤解しないでください。プログラムをいくつかのアセンブリに分割する必要はありません。ファサードの背後にあるいくつかのクラスを IntelliSense から隠し、外部からのインスタンス化を防ぎたいだけです。しかし、私が間違っていなければ、これほど簡単な方法はありません。