前に、「西のデザインモード」が見られるものの、今日では、研究デザインパターンへの体系的な計画を始めましたが、それはストップ研究ノートは、コンテンツの多くなく適用するだけで概念につながる書き込みをすることはできません。この時間は、学習のプロセスを書き留めます。次は、トピックを入力します。
デザインパターンとは何ですか?デザインパターン(デザインパターン)は、一般的に、経験豊富なオブジェクト指向のソフトウェア開発者によって使用されるベストプラクティスを表します。デザインパターンは、ソフトウェア開発プロセスにおけるソフトウェア開発者が直面する共通の問題への解決策です。これらのソリューションは、最大合計時間の長い期間のための試行錯誤を通じて、多くのソフトウェア開発者です。
今日は構造モデルであるデコレータ学習モード、である、それは主に、オブジェクトの機能を拡張する方法のために、オブジェクトの作成とは何の関係もありません。別にリニア継承の使用から、また、我々は様々なニーズに直面しているとき、私たちは、このモードを使用し、独自のデコレータ異なる順序実行方法を選択することができ、その機能を拡張する装飾品の数を作成するために使用することができます。
次に私たちが飾られ、クリスマスツリーを言って、例を挙げてクリスマスツリーを持っているすべての最初の、
1つの VARのツリー= {};
クリスマスの後に我々は、装飾を達成するために次のアクションとそれを飾りますよ
tree.decorate = 関数(){ にconsole.log( 'これは木です' )。 }
アクションでは、まだ装飾品(デコレータ)次は、クリスマスツリーに属し、いくつかの装飾を作成しません
tree.BlueBalls = 関数(){ この .decorate = 関数(){ この.BlueBalls.prototype.decorate()。 console.log( 'BlueBalls' ) } } tree.Angel = 関数(){ この .decorate = 関数(){ この.Angel.prototype.decorate()。 console.log( '天使' ) } } tree.RedBalls =関数(){ この .decorate = 関数(){ この.RedBalls.prototype.decorate()。 console.log( 'RedBalls' ) } }
クリスマスツリー、装飾されたクリスマスツリーの操作、装飾されたクリスマスツリーの飾りが、十分ではありません持っている私たちは、今、あなたはまた、装飾を得る方法を必要とします
tree.getDecorator = 関数(デコ){
ツリー[デコ] .prototype = この ;
返す 新しいツリーを[デコ]。
}
すべてのものは、クリスマスツリーを飾るために準備ができています
ツリー= tree.getDecorator( 'BlueBalls' ); ツリー = tree.getDecorator( '天使); ツリー = tree.getDecorator( 'RedBalls' ); tree.decorate(); console.log( '木'、木)
コンソールに印刷された上記の文を実行すると、あなたの次のテキストを見ることができます
文は以下の装飾の注文、それによって置き換えられた場合
図から、文の実行の順序が異なるため、派生異なる方法ではありません。
概要:Decoratorパターンは、4つのステップが必要です 装飾品、装飾された動き、取得動作飾りで装飾されたが、
また、装飾見つけることが困難なコードに見て飾る方法を、しかし、この方法は、装飾を実行するだけでなく、装飾を継承された後に、この方法が行われます。装飾方法を得ることは実際には装飾に重畳する装飾品を飾る方法を装飾する方法です。メソッドの継承になってきて間してください。
好奇心の私がするので、オブジェクトがプリントアウトされているreeが、継承が継承されますgetDecoratorは()数回使用しています。以下は、ソースコードの例です。
<スクリプトタイプ= "テキスト/ javascriptの"> VARの ツリー= {}; tree.decorate = 関数(){ にconsole.log( 'これは木です' )。 } tree.getDecorator = 関数(デコ){ この [デコ] .prototype = この; 返す 新しいツリーを[デコ]。 } tree.BlueBalls = 関数(){ この .decorate = 関数(){ この.BlueBalls.prototype.decorate()。 console.log( 'BlueBalls' ) } } tree.Angel = 関数(){ この .decorate = 関数(){ この.Angel.prototype.decorate()。 console.log( '天使' ) } } tree.RedBalls = 関数(){ この .decorate = 関数(){ これ .RedBalls.prototype.decorate()。 はconsole.log('RedBalls' ) } } ツリー = tree.getDecorator( 'BlueBalls' )。 ツリー = tree.getDecorator( '天使); ツリー = tree.getDecorator( 'RedBalls' ); tree.decorate(); console.log( '木' 、木) </スクリプト>