私のアプリケーションの多くの異なる画面は、同じエンティティ/ビジネスオブジェクトを何度も繰り返し参照しています。
現在、各画面は各オブジェクトの独自のコピーを参照します。
また、エンティティオブジェクト自体が他のエンティティオブジェクトへのアクセスを公開する可能性があり、オブジェクトの新しいコピーが作成されます。
私はキャッシュソリューションを見つけようとしています。キャッシュデザイン:不変のキーに基づく可変エンティティオブジェクトのフライウェイト
私はboost :: flyweightと似た何かを探しています。
しかし、不変のキー/変更可能な値と参照カウントに基づいています。
boost::flyweight<key_value<long, SomeObject>, tag<SomeObject> > object;
上記はほぼ完全です。 SomeObjectへの変更可能なアクセスを与える同様のコンテナを探しています
編集: 私はフライウェイトの構文とセマンティクスが好きです。しかし、フライウェイトは const SomeObject &にアクセスするだけで、オブジェクトを変更することはできません。
EDIT2:コードはMSVC++ 6
上の任意のアイデアをコンパイルする必要がありますか?
"上記はほぼ完璧です" - 何が問題なのですか? –
flyweightはオブジェクトへのconstアクセスのみを許可します(const SomeObject&) –
フライウェイトごとの外部情報を追加するか、共有固有情報を変更するために変更可能にしますか? – p00ya