問題タブ [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.
java - Flyweight パターンで説明されている内因性状態と外因性状態の違いは何ですか?
Gang of FourFlyWeight
内のパターンに関する章から、FlyWeight パターンは、ほとんどのオブジェクトの状態を外部にできる場合に適用できます。
とはextrinsic state
どういう意味ですか? このパターンは、オブジェクトの共有に使用されているように感じます。オブジェクトが共有される場合、そのオブジェクトはどのようにして状態を持つことができるのでしょうか?
design-patterns - フライウェイトパターンと静的フィールド
私の理解では、フライウェイトパターンの目的は、共通の外部状態を共有することにより、メモリフットプリントを減らし、パフォーマンスを向上させることです。共有状態を静的フィールドに格納するよりもパターンを実装することを好むのはなぜですか?
次の例を考えてみましょう:http ://www.oodesign.com/flyweight-pattern-wargame-example-java-sourcecode.html
私が正しければ、この例のポイントは、単一のSoldierImpオブジェクトへの参照を保持することにより、SoldierClientクラスのすべてのインスタンス間で共通の状態(soldierGraphicalRepresentationオブジェクト)を共有することです。
この設計の実装に手間がかかるのはなぜですか?SoldierClientクラスを次のように宣言したくなるでしょう。
このようにして、SoilderClientのすべてのインスタンスが、同じsoldierGraphicalRepresentationオブジェクトへの参照を共有し、同じ目標が達成されます。私が間違っている?
serialization - シリアライゼーションは Flyweight デザイン パターンを許可しますか?
Flyweight パターンを使用して、クラスの複数のインスタンス間で特定の非静的変数を制限する複雑なオブジェクト設計を使用しています。両方のオブジェクト (flyweight 情報とそれを含むクラス) が Serializable であり、それらのカードのリストが wcf サービスからクライアントに転送される場合、クライアントはパターンを維持しますか (つまり、複数のインスタンスに対して flyweight 情報の 1 つのコピーのみ)上位クラスの)?うまく説明できない場合に備えて、以下に簡単なコード例を示します。
リストには 50 個以上の SmallObject が含まれていますが、Flyweight パターンを使用して、個別のオブジェクト タイプごとに十分なイメージのみを作成します。設計上の制限により、サブクラスで表現できないさまざまなタイプの SmallObjects があるため、静的変数にすることはできません。私が知る必要があるのは、クライアントが 50 個以上の個別の Flyweight オブジェクトを受け取ったのか、それともパターンが維持されていて、各タイプの Flyweight を 1 つしか受け取っていないのかということです。
java - データを再利用してレポートを作成する戦略パターン
さまざまなコンポーネントを使用するレポートを実装しています。つまり、ヘッダー、フッター テーブルを持つものがあります。別のものには、ヘッダー、タイトル、表、グラフがあります。戦略パターンと同様のパターンを使用してこれを実装しました。同じクラスのレポートを使用してレポートを生成し、Component( onDraw ) を定義したインターフェイスを使用できます。各コンポーネントがテーブル、グラフなどを実装するのはどれですか...
しかし、メモリ消費と優れたソフトウェア設計のために、同じデータを持つ各レポートで使用されている場合、重複するテーブルとヘッダーを作成する必要はありません。1 つのレポートから描画されたテーブルとヘッダーを保存し、別のレポートで再利用するために使用できるパターンはありますか? フライウエイトパターンを見てきました。または、クラス レポートで静的変数を使用します。これに関する問題は、レポート クラスで異なるデータを使用したい場合です。
java - Flyweight Design を使用した XML DOM の解析
DOM を使用して Java で XML ドキュメントを処理すると、多数の反復ノード、属性、または値を含むドキュメントのメモリを大量に消費する可能性があります。
flyweight-pattern を内部的に利用してメモリフットプリントを最小限に抑える Java XML DOM API を知っている人はいますか? たぶん、構成可能/有効/無効にすることもできますか?
c# - C#フライウェイトパターンの異なる「プロセッサ」で同じオブジェクトを処理しますか?
私はさまざまな設計パターンについて多くの調査を行ってきましたが、これを行う正しい方法を決定しようとしています。
サムネイルの作成やデータベース レコードの保存など、いくつかの異なる方法で画像を処理する必要がある、開発中の画像アップロード MVC アプリがあります。これにアプローチする最善の方法は、フライウェイト パターンを使用することでしょうか? これを例として使用します。
この質問にも2番目の部分があります。プロセッサに関連する「サブプロセッサ」が小さい場合はどうなりますか? 私の頭の中にある例は、ブックジェネレーターです。
これもフライ級のパターンでしょうか?そのツリーのトラバーサルをどのように処理しますか?
編集
以下でこの質問をしましたが、ここに追加したかったのです。
私が見た複合パターンの例はすべて値の処理に関連しているように見えますが、flyweight パターンはオブジェクトの状態の処理 (または共有) を処理しているようです。例を読みすぎているだけですか?パターンを組み合わせると解決策になりますか?
design-patterns - flyweightデザインパターンで内因性状態と外因性状態をどのように選択しますか?
ステレオタイプの例を理解するのにうんざりしているので、この質問を例として取り上げましょう。
ある新聞社は、自社のジャーナリストによって書かれたさまざまなニュース記事と、さまざまな報道機関からのニュース ソースを管理するための新しいソフトウェア システムの開発を計画しています。
さまざまな記事がさまざまな形式と配置で読者に表示されます。同社のオンライン ニュース Web サイトでは、メインのフロント ページに最新のニュース記事が表示されます。ここでは、ビーズとニュース記事の要約が表示されます。サイトの RSS フィードには、主要なニュース記事の見出しと簡単な要約が XML 形式で表示されます。どちらの場合も、ユーザーは見出しをクリックして完全な記事を表示できます。
新聞のデジタル版には、従来の新聞紙に従ってフォーマットされた完全な記事が含まれています。
ジュニア ソフトウェア エンジニアが現在、この新聞社の新しいソフトウェア システムを設計しています。彼は、ニュース記事を表すクラスを設計しました。このクラスの各オブジェクトは、1 つのニュース記事 (見出し、著者、カテゴリ、簡単な説明、記事全体など) を表します。
3 つのシナリオ (オンライン新聞、RSS フィード、デジタル新聞) のすべてで、ニュース記事クラスのオブジェクトを使用してコンテンツを表示します。
今、私の見解によれば、
外部 - 見出し、著者
固有 - カテゴリ
これは正しいです?または、これらの状態を効果的に識別する方法はありますか?
java - オブジェクトの作成時間に最も影響を与えるものは何ですか?
オブジェクトの作成には時間がかかることを知っているため、フライウェイト パターンが存在します。私が知りたいのは、単一のオブジェクトを作成する時間を最も長くするものは何ですか?
メモリ内の少し大きいスペースの検索かもしれないと思ったのですが、オブジェクトが持つ各フィールドよりもわずかに大きいだけだと思います。次に、特定のフィールドの値を探している間にメモリ内の正しいアドレスに移動する可能性がありますが、追加したのはオブジェクトのアドレスを探すことだけです。
java - 2 次元配列による Flyweight パターン
Objects Bee のマトリックス (二次元配列) があります。flyweight パターンを適用したいのですが、どのように適用すればよいですか? 巨大なサイズでマトリックスを直接インスタンス化すると、メモリの割り当てが多すぎます。パターンを適用する効率的な方法はありますか?
パターンが Bee オブジェクトに適用できることは確認済みですが、行列のメモリが気になります。PD私はJavaを使用しています。