簡潔に良いのJavaプログラマのJavaデザインパターンとトレーニング - フライ級

良いプログラマのJavaトレーニング簡潔にJavaのデザインパターン-フライ級

フライ級のI、

  シングルモードにやや類似フライ実施形態は、唯一の共有オブジェクトを生成するために使用されます。フライ主な目的は、複数のオブジェクトが共有可能メモリーの消費を低減するために、各訪問者のために別のオブジェクトを作成することなく、不要なメモリ消費、及び共に同じオブジェクトへのより多くのアクセスを低減することです。

第二に、図フライ級の構造

  フライ級の構造が複雑であり、プラントモデルはと組み合わせて使用​​するので、フライ級は、図中、工場出荷時のクラス構造に含まれています。

12557379-610e1265ee73dcb1.png

  なお、図フライ級の構造では、次のいくつかの役割が含まれています。

  一方、外の世界に通常インタフェースまたは抽象クラスは、抽象フライ級クラスを共有する具体的なメタクラス一般的な方法を宣言し、これらの方法は(内部状態)内部のデータを提供することができるフライ級オブジェクト:フライ(抽象フライ級クラス)の外部データは、これらの方法によって(外部状態)を設けてもよいです。

  それは、そのインスタンスフライ級オブジェクトをいう抽象クラスを実装フライ;特にメタクラスは、内部状態のための記憶空間を提供楽しむ:ConcreteFlyweightは、(特定のクラスのフライ級)。私たちは、一般的にのみ、各要素フライ級クラスの特定のオブジェクトを楽しむ提供し、シングルモードの実施形態のフライ級クラスを設計するために特異的に結合することができます。

  UnsharedConcreteFlyweight(特に非共有クラス・フライ級):サブクラスを抽象クラスフライ級ではないすべてのサブクラスが共有される必要がある、共有することができない、または非共有は、具体的にはフライ級のクラスを設計することができる、非共有特定のフライ級を必要とする場合これは、オブジェクトのクラスをインスタンス化することで直接作成することができます。

  FlyweightFactory(フライ級ファクトリクラス):作成および管理するためのフライ級ファクトリクラスは、フライ級、そのプログラムのフライ抽象クラスオブジェクト、共有要素フライ級プール、プール一般的なフライ級に格納されている特定のオブジェクトの様々なタイプ「オンキー」を記憶するように設計されている設定(他の種類のコレクションであってもよい)工場設計パターンを組み合わせてもよい、ユーザが特定の共有要素オブジェクトを要求するとき、フライ級植物細胞は、フライ級に格納されています新しいインスタンスまたはインスタンスを作成します(存在する場合ではない)、およびフライ級プールに保存され、新しく作成されたインスタンスを返します。

第三に、達成するために、Flyweightパターン

  ファクトリクラスフライに組み込まれたフライは、フライ級の役割は、ユーザがプールフライ場合は、最初のフライ級プールから取得したオブジェクトを、必要とするとき、フライフライプールオブジェクトを格納するためのファクトリクラスを提供することです存在しない、新しいオブジェクトが新しいオブジェクトを保存するために、ユーザーのフライ級とフライ級プールに戻される作成します。次に、着陸を実現フライ級。IVの概要

  これは、同じランダーオブジェクトと「共有」されて着陸して着陸、上記のコードおよびオペレーティング結果から見ることができます。プール内のフライ級オブジェクトは2つだけのオブジェクトです。

  オブジェクトを多重化することができるようにフライ級の利点は、その独立した外部の状態は、異なる環境で(共有オブジェクトは、異なる外部環境に適応することができます)。フライは、オブジェクト作成とガベージコレクションのオーバーヘッドを低減しつつ、メモリ消費量を低減する、同じまたは類似のきめの細かいオブジェクトを共有することができます。

  フライ級の欠点は、クライアントによって保存された外部の状態は、共有オブジェクトは、外部の状態の支出が比較的大きいかもしれ読みください。フライ級は、複雑なロジックだけでなく、メンテナンスコストの状態になり、外部状態、との個別の内部状態を必要とします。

グッドJavaプログラマのトレーニングの公式ウェブサイト:のhttp://www.goodprogrammer.org/bigdata.shtml

ます。https://www.jianshu.com/p/ec6e2d345b89で再現

おすすめ

転載: blog.csdn.net/weixin_33813128/article/details/91276125