質問

Builder パターンと Flyweight パターンはどちらも多数のオブジェクトを処理しますが、使用方法の点での違いは何ですか?

役に立ちましたか?

解決

Builder パターンは次の目的で使用されます。 作成する 多くのオブジェクト、つまりフライウェイト パターンは約 共有 このようなオブジェクトのコレクション。

これら 2 つのパターンはどちらも「複合物」を扱います。オブジェクトには複数の要素が含まれる場合がありますが、それらを一緒に使用する必要はまったくありません。Flyweight のアーキタイプのユースケースは次のとおりです。 数十個のキャラクターオブジェクトのプール テキスト エディタ アプリケーションで何度も使用されます (これは、 『GoF』本)

他のヒント

ストレートウィキペディアから。

のrel="noreferrer">

  

フライ級は、ソフトウェアの設計です   パターン。フライ級は、そのオブジェクトであります   共有することにより、メモリの使用を最小限に抑えます   他で可能な限り多くのデータ   類似したオブジェクト。それを使用する方法です   大量にオブジェクトをする場合、単純な   繰り返し表現を使用します   メモリの許容できない量ます。

する

  

Builderパターンは、ソフトウェアであります   デザインパターン。意図があるに   の建設の抽象ステップ   オブジェクト異なるように   これらの手順の実装することができます   の異なる表現を構築   オブジェクトます。

一つは、建物オブジェクトとメモリ使用量と、他の助けを借りてのに役立ちます。あなたが潜在的に異なるフライ級オブジェクトを「構築」するためにビルダーを使用することができます。

「多くのオブジェクトを操作する必要があり、これらは無関係なデータを持っている余裕はありません。」とき

Flyweightパターンは適切ですJavaでは、Stringオブジェクトは、フライ級として管理されています。 Javaは、リテラルプールにすべての固定文字列リテラルを置きます。冗長リテラルについては、Javaは、プール内のコピーを1つだけ保持します。

フライ作業を行うための鍵は、ファクトリメソッドまたはビルダーデザインパターンを使用して、オブジェクトのインスタンス化を制御することです。適切なタイプのオブジェクトを返す、指定された入力基準:ファクトリメソッドのジョブオブジェクトを作成するだけです。

抽象工場は、それはあまりにも複雑なオブジェクトを構築することができるという点でビルダーに似ています。主な違いは、Builderパターンがステップによって複雑なオブジェクトのステップを構築に焦点を当てていることです。抽象要因の重点は、製品のオブジェクト(単純または複合体のいずれか)の家族です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top