全体を書き直すことなく、一部のソフトウェアで最近遭遇した設計上の欠陥を修正しようとしています。一部のサーバーからデータを受信し、受信したすべてのデータを格納する別の DLL (StaticDataClass と呼びます) 内のクラスにそれを書き込むメッセージ リスナー スレッドを持つ .exe があります (ほとんどが静的です)。起動時にデータベースからプルされます)。このクラスは、他のクラスがデータを取得するために使用できるメソッドも提供します。問題は、ストア (セット) メソッドがすべてパブリックであるため、他のクラスがこのデータを上書きして、アプリケーション全体を壊す可能性があることです。実行可能ファイル自体に含まれるオブジェクトを除くすべてのオブジェクトのデータを保護する (set/store メソッドを非表示にする) には、どうすればよいでしょうか?
現在、パブリックゲッターのみを定義するインターフェースをいじっています。次に、シングルトンクラスにそのインターフェースを実装させ、インスタンスプロパティがインターフェースタイプを返すようにして、インターフェースで宣言された get メソッドのみを使用できるようにします。 . しかし、実行可能ファイルが起動すると、インターフェイス タイプではなく StaticDataClass オブジェクトへの実際の参照が何らかの方法で取得されるため、store/set メソッドも呼び出すことができます。
これは完全な証拠ではありませんが、システムに精通していない一部の開発者が、これらのパブリック ストレージ メソッドを使用しても問題ないと考えるのを防ぎます。これは、Visual Studio の intellitype によって、コーディング中にそれらが可視化されるためです。代わりに、ストア メソッドを含む型としてオブジェクトをキャストすることによって、それを壊そうとする必要があります。
これを行うためのよりクリーンな方法はありますか?