シングルトンを大量に使用するライブラリを使用したいのですが、実際には複数のインスタンスを持つためにはマネージャクラスのいくつかが必要です。コードはオープンソースですが、コードを自分で変更すると、libを新しいバージョンに更新するのが難しくなります。シングルトンを非シングルトンにすることはできますか?
シングルトンの新しいインスタンスまたはライブラリ全体を強制的に作成するトリックはありますか?
シングルトンを大量に使用するライブラリを使用したいのですが、実際には複数のインスタンスを持つためにはマネージャクラスのいくつかが必要です。コードはオープンソースですが、コードを自分で変更すると、libを新しいバージョンに更新するのが難しくなります。シングルトンを非シングルトンにすることはできますか?
シングルトンの新しいインスタンスまたはライブラリ全体を強制的に作成するトリックはありますか?
答えは「それに依存する」です。良い例は、Microsoft Cランタイムで使用されるC++ヒープです。もちろん、これはシングルトンとして実装されています。今、静的にCRTを複数のDLLにリンクすると、複数のコピーが作成されます。新しい実装では1つのヒープがありますが、古いCRTではライブラリごとに1つのヒープが作成されていました。
Windowsでは、各インスタンスを異なるDLLにカプセル化できます。
また、ライブラリはシングルトンのシングルトンの性質にも依存します。ライブラリを更新する場合は、変更がライブラリ機能に違反していないことを確認する必要があります。これは毎回手動でのみ行うことができます。
最初にライブラリを書いた人を見つけて、自宅の住所を訪れて、血縁のあるパルプに叩きつけてください。ソフトウェアデザインに関する本が好きです。 :)
とは別に、元のライブラリの変更をパッチセットとして維持して、新バージョンごとに簡単に適用できるようにします。また、ライブラリに変更を加えて、パッチを自分で保守する必要はありません。 ;)
私の反例を参照してください。 – MSalters