2

Decorator デザイン パターンによって伝達される機能に「Decorator」という名前が選ばれた理由を説明できる人はいますか?

デコレータとマーキング インターフェイスは、その目的が非常によく似ているように聞こえるため、この名前はかなり誤解を招くものだといつも思っていました。ただし、マーカーは実際には「何もしない」のに対し、デコレータは確かに「何もしません」。しかし、私にとって装飾という用語は受動性を意味します。これは、機能を追加するために使用されるこのパターンには実際には当てはまりません。

4

4 に答える 4

7

この用語の由来は、スクロールバーや閉じるボタンなど、さまざまなコンポーネントでユーザー インターフェイスを装飾する使用例に由来すると思います。

EDIT:スティーブン・ジョン・メツカーによる「C#のデザインパターン」の参照ページ308:

DECORATOR (およびおそらく DECORATOR の名前の由来となったアプリケーション) の元のアプリケーションの 1 つは、GUI コンポーネントの構築にあります。

于 2009-01-05T19:49:09.010 に答える
3

アナロジーは、家を飾るとき、壁などを壊さないで、見た目(およびその機能)を変える方法で(好きなだけ)何かを置くだけだと思います。この言葉は、邪魔にならないこと、そしてオプションのことを意味するために選ばれたと思います。

于 2009-01-05T19:53:48.597 に答える
2

デコレーターは、既存のメソッドに追加機能を追加することによってインターフェースを「装飾」しますが、実際には独自の機能を追加するわけではありません。装飾は基本機能に不可欠ではありません。それ以外の場合は、基本クラスに組み込まれています。

于 2009-01-05T19:48:43.880 に答える
0

既存のオブジェクトに新しい機能を追加しているためです。本質的には、新しい機能でオブジェクトを「装飾」しています。

ねえ、名前を作るのはオタクに任せてください。

于 2009-01-05T19:48:00.823 に答える