2010-12-26 6 views
1

私はUniプロジェクトの一環としてデコレータパターンを初めて使用しています。私が見る限り、このパターンはモジュール式の機能を追加するためのものであるように思われますが、追加されたモジュラーコンポーネントがあるコーヒーやピザメーカーなどの用途で教えてきました。プロパティではなく動作します。デコレータパターン - 複数のラッパーまたは数量プロパティ?

私は両方の用途を最大限に活用しようとしていますが、質問があります。私たちが使っている本の例では(ヘッドファーストデザインパターン)、このパターンはコーヒーショップで使用され、さまざまなコーヒーを作ります。たとえば、ミルク、泡、砂糖、スプリンクルはすべてデコレータです。

同じデコレータを複数回使用したシステム(たとえば、2つの糖分を含むコーヒー)はどのように実装しますか?あなたはコーヒーを巻き戻しますか、または砂糖に量的性質を与えますか?または(私が疑い始めているように)パターンがこのように使用されるように設計されていないので、これは決して問題にならないでしょうか?

+0

デコレータに数量フィールドを追加する傾向がありますが、同じデコレータを複数回適用するという考えは興味深いものです。あなたはそれを両方の方法で試して、あなたが一番好きなものを見るかもしれません。 –

答えて

1

デコレータは、が飾られた方法について気にしません与えられたオブジェクトは既にあります。デコレータも指定されたオブジェクトも、これに関する情報を格納しません。基本的には、デコレータの動作/状態を変更したいので、デコレータの内部から行う必要があります。

Sugarquantityプロパティを指定します。あなたは追加の引数を取る新しいコンストラクタを追加することでこれを行うことができます(そして、標準のコンストラクタはデフォルトでquantity1に設定し、それに応じて文書化します)。

+0

ありがとうございました - 私はこれに頼りにしていました。代わりにもっと多くの作業が必要ですが、意図したとおりに使用していないと思っていました。 – Jim

関連する問題