2017-01-26 8 views
1

boost::flyweightをGOFパターンとして使用する方法を理解できません。どこかの例が存在しますか?boost :: flyweightをGOFパターンとして使用するには?

たとえば、次のように使用します。 "太った"オブジェクトを構成するフライウェイトコンテナがなければなりません。このコンテナは、あるオブジェクトに対して軽量の「ホルダー/記述子」を与えることができます。そして、私はいくつかのコンテナに記述子を格納することができます。

boost::flyweightからオブジェクトの「ホルダー/ディスクリプタ」を受け取る方法を理解できません。

答えて

1

パターン実装では、1:1を元のパターン記述にマッピングする必要はありません。 GoFが使用していた機能のセットでは利用できない言語機能を利用して、その実装をより実演的に、より冗長に、よりメンテナンス可能にするなどの理由から、の良いことがです。

The boost::flyweightis the "lightweight holder/descriptor"

Boost.Flyweightは、ドロップイン置換const T用として動作するクラステンプレートflyweight<T>を、提供することによって、この一般的なプログラミングイディオムを使用することが容易になります。

+0

私はまだ得られません。例えば、テキストエディタの場合、ユーザが入力するeath文字の「記述子」のリストを含むコンテナが必要です。だからどのようにブーストでそれを実装するには?それは飛行船のリストでなければならない? (std :: list > line;) – AeroSun

+0

@AeroSun [This one、フォーマットされたテキスト処理について](http://www.boost.org/doc)のようなドキュメントの例を見ると、 /libs/1_63_0/libs/flyweight/example/html.cpp)、それらが正確にそれをするのを見るでしょう: 'typedef flyweight 文字; std :: vector scanned_html; ' – milleniumbug

+0

Thx a lot!今分かります。それはGoFのパターンとあまり違います。ブーストの実装は非常にシンプルに見えますが、内部オブジェクトリポジトリへのアクセス権がないことが良いのかどうかはわかりません。 – AeroSun

関連する問題