21

2つのパターンは同じことを達成しているようです。実世界でのさまざまなユースケースは何ですか? ありがとう

4

7 に答える 7

33

Flyweight とは、1 つのものをさまざまな種類で扱うことです。

シングルトンは、単一のものを持っているときです。

たとえば、Flyweight パターンを使用してキーボードの文字を表すことができます。の 1 つのオブジェクトa、 の 1 つのオブジェクトbなど。どちらも文字ですが、異なる種類の文字です。

対照的に、シングルトンを使用してキーボードを表す場合があります。存在できるのは 1 つだけです。

于 2013-05-25T15:09:52.697 に答える
7

それらは無関係です:

Flyweight は、CPU とメモリを節約する同じ「値」を持つクラスの新しいインスタンスを作成するのではなく、可能な限り (明らかに不変の) クラスのインスタンスを再利用しています。

シングルトンとは、(通常は変更可能な) クラスのインスタンスが 1 つしかない場合です。これは、単一のインスタンスを使用して同じ状態を「見る」すべてのスレッドを容易にするために、マルチスレッド環境でよく使用されます。

于 2013-05-25T15:13:18.337 に答える