1. デコレータモード(Decorator)はクラスの機能を動的に追加・変更することができます
2. クラスが関数を提供する場合、従来のプログラミング モデルでは、それを継承するサブクラスを作成し、クラス メソッドを再実装する必要があります
3. デコレータ モードを使用すると、実行時にデコレータ オブジェクトを追加するだけで済み、最大限の柔軟性を実現できます。
次に、PHPを使って小さなお絵かきボードの機能(指定した色のグラフィックを描く)を実装する例をあげてみましょう
このグラフィックに必要な色を追加したい場合はどうすればよいですか?
; foreach ($this->data as $line) { foreach ($line as $char) { echo $char }
エコー<br>
; }
1. このようにハードコーディングされているので、その日に色を追加したくない場合は、コードを変更するか、タイトルを追加する必要があります。 。 。需要を待って、デコレーター モードを使用して上記のコードを変更し、上記のコードを分離してみましょう。
; } //画之后的操作 function afterDraw() { echo
; } //描画後の操作 function afterDraw() { echo ; } }
5.結果
緑色の長方形を出力します 同様に、太字、斜体、カスタムタイトルの設定などを使用したい場合は、特定のデコレーターを作成し、それをキャンバスに挿入するだけで実現できます
6.まとめまたは3. デコレータ メカニズムは、
1. デコレーターは、特定の操作を実行する前に、カスタマイズされた操作をいくつか追加しますcall_user_func
或者call_user_func_array
2. デコレーターの実装は、drupal のフック機構などのフック機構に似ていますcall_user_func
call_user_func_array を使用して実装することもできます。これについては、drupal のフック実装を参照してください。これも非常に優れています。デザインパターンにないのでここでは紹介しませんが、時間があるときに書きます。 <p align="left">
</p>
<div style="display:none;">
<span id="url" itemprop="url">
</span><span id="indexUrl" itemprop="indexUrl"></span>http://www.bkjia.com/PHPjc/1036924.html<span id="isOriginal" itemprop="isOriginal"></span>www.bkjia.com<span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span>true<span id="genre" itemprop="genre"></span>http://www.bkjia.com/PHPjc/1036924.html<span id="description" itemprop="description"></span>技術記事</div> PHP デザインパターン デコレータモード 1. はじめに 1. デコレータモード (Decorator) はクラスの関数を動的に追加・変更することができます 2. クラスが提供する関数を変更・追加したい場合...<div class="art_confoot"></div> 🎜
🎜🎜