問題タブ [flyweight-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1738 参照

c# - オブジェクトの複数のインスタンスの作成を回避するには?

Basic従業員の給与は、との 2 つの要素から計算されStandardPointます。1 人の従業員は、毎月 1 つの Basic ポイントと 1 つ以上の (またはまったくない) StandardPoint を取得します。

StarPerformerPoint 、 RecognitionPoint 、 ReferralPoint 、 BrandingPoint など、さまざまな StandardPoints があります。

TotalAnnualSalary を計算する機能があります。従業員は、1 年間に最大 4 つの標準ポイントを利用する資格があります。これ以上点を取っても年俸合計は4点しか出ません。

次のコードがあります。それは正常に動作します。ただし、非効率的なメモリ使用率があります。StandardPointElement は複数回作成されます。

このシナリオでオブジェクトの作成を最適化するにはどうすればよいでしょうか?

アップデート

Flyweight パターンのようなものを使用できますか?

ウィキペディアはFlyweight パターンについて述べています

flyweight は、他の同様のオブジェクトとできるだけ多くのデータを共有することによって、メモリの使用を最小限に抑えるオブジェクトです。これは、単純な反復表現が容認できない量のメモリを使用する場合に、多数のオブジェクトを使用する方法です。

Flyweight Design Pattern - C#の記事で、Shailendra Chauhan は次のように述べています。

外部データは実行時にオンザフライで計算され、flyweight オブジェクトの外部に保持されます。したがって、ステートフルにすることができます。

Flyweight パターンが実用的なのはなぜですか?

コード

従業員クラス

工場

クライアント

0 投票する
4 に答える
5188 参照

c# - Flyweight パターンを理解する

意図:

このパターンの目的は、共有を使用して、内部状態の一部が共通で、状態の他の部分が異なる可能性がある多数のオブジェクトをサポートすることです。

オブジェクトは、静的フィールドを介して状態を共有できます。

flyweight パターンを使用して多数のオブジェクトの内部状態を共有することと、静的フィールドを使用することの違いは何ですか?

flyweight が Factory を介して提供するオブジェクトのプールは、flyweight の本当の意味ですか?

0 投票する
1 に答える
1617 参照

java - Java Flyweight パターン: 外因性および内因性の状態?

Flyweightパターンのこれらの状態の違いの間で混乱しています。

intrinsic状態は共有されている状態であり、共有されていない状態であることを認識してExtrinsicいます。

extrinsicただし、パターン内または以下の例内で状態が持つ重要性はわかりません。

ウィキペディアでテキスト エディターに関する例を参照してください。本質的な状態は文字であり、その外部的な状態はフォント、色などですか?

0 投票する
1 に答える
808 参照

design-patterns - multiton パターン vs flyweight パターン

MultitonFlyweightパターンの間に単一の違いは見られません。違いは何ですか?

0 投票する
1 に答える
209 参照

c++ - flyweigt パターンと同時実行性

flyweight 設計パターンの場合、どうすればスレッドの安全性を確保できますか。懸念すべき同時実行の問題は何ですか。これらの問題に対する標準的な解決策はありますか。c++ に関する解決策を探しています

フライウェイトの作成中に、通常のスレッド ミューテックス アプローチを試みていました。私が見逃していた他の懸念点があるかどうか疑問に思っていました。また、フライウェイトのコピーを防ぐ必要があります。別の懸念は、ウィキペディアで言及されているように、同時スレッドが複数の Flyweight インスタンスを作成できるようにすることで、競合を排除し、値ごとに複数のインスタンスを許可します。- そうするのは良い習慣ですか?

0 投票する
3 に答える
2557 参照

java - Flyweight デザイン パターンと Java キャッシュの違いは何ですか

Flyweight 設計パターンについて読み、ヒープの使用を節約するために共有できるオブジェクトを格納することを知りました。Java キャッシュは、メモリを節約するために、後で再利用できるオブジェクトも保存します。では、Flyweight 設計パターンと Java キャッシュの本当の違いは何ですか?