2009-11-14 8 views

答えて

11

ビルダーパターンはフライパターンは約オブジェクトのそのようなコレクションを共有していることにより、多くのオブジェクトを作成に使用されます。

これら二つのパターン「コンポジット」との契約、いくつかの要素を持っているかもしれないが、彼らはまったく一緒に使用する必要はありません。つまりオブジェクトの両方。フライ級のための原型のユースケースは、数十文字のプールは、テキストエディタアプリケーションで何度も使用されているオブジェクトされる(これは"GoF" bookで与えられる例である)

9

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

Flyweight

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

Builder

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

一つは建物オブジェクトとメモリ使用量と、他の助けを借りてのに役立ちます。異なるフライウェイトオブジェクトをビルドするためにビルダーを使用する可能性があります。

2

場合、「多くのオブジェクトフライパターンが適切です無関係のデータを持っている必要はありません」 Javaでは、Stringオブジェクトはフライウェイトとして管理されます。 Javaはすべての固定文字列リテラルをリテラルプールに置きます。冗長リテラルの場合、Javaはプール内に1つのコピーしか保持しません。

フライ作業を行うための鍵は、ファクトリメソッドまたはビルダーデザインパターンを使用して、オブジェクトのインスタンス化を制御することです。ファクトリメソッドの仕事は、単にオブジェクトを作成することです。与えられた入力条件は、適切な型のオブジェクトを返します。

抽象工場が、それはあまりにも複雑なオブジェクトを構築することができるという点でビルダーに似ています。主な違いは、ビルダーパターンが複雑なオブジェクトを段階的に構築することに焦点を当てていることです。抽象的な要素の重点は、製品オブジェクトのファミリ(単純または複雑)にあります。

関連する問題