ホームページ >バックエンド開発 >PHPチュートリアル >PHP デザイン パターンのデコレータ パターンを簡単に説明します。

PHP デザイン パターンのデコレータ パターンを簡単に説明します。

墨辰丷
墨辰丷オリジナル
2018-06-11 09:55:001847ブラウズ

この記事では主に PHP デザイン パターンのデコレータ パターンについて簡単に説明します。興味のある方はぜひ参考にしてください。

定義:

デコレータ パターンは、元のクラス コードと継承を変更せずにクラスを動的に拡張する機能です。従来のプログラミング モデルでは、サブクラスが親クラスを継承してメソッドのオーバーロードを実装します。デコレータ パターンを使用すると、新しいデコレータ オブジェクトを追加するだけで済みます。これにより、より柔軟で、過剰なクラスや層を回避できます。

ロール:

Component (装飾されたオブジェクトの基本クラス)
ConcreteComponent (装飾される特定のオブジェクト)
Decorator (デコレーターの基本クラス)
ContreteDecorator (特定のデコレータ クラス)

サンプル コード:

//被装饰者基类
interface Component
{
  public function operation();
}
 
//装饰者基类
abstract class Decorator implements Component
{
  protected $component;
 
  public function __construct(Component $component)
  {
    $this->component = $component;
  }
 
  public function operation()
  {
    $this->component->operation();
  }
}
 
//具体装饰者类
class ConcreteComponent implements Component
{
  public function operation()
  {
    echo 'do operation'.PHP_EOL;
  }
}
 
//具体装饰类A
class ConcreteDecoratorA extends Decorator {
  public function __construct(Component $component) {
    parent::__construct($component);
 
  }
 
  public function operation() {
    parent::operation();
    $this->addedOperationA();  // 新增加的操作
  }
 
  public function addedOperationA() {
    echo 'Add Operation A '.PHP_EOL;
  }
}
 
//具体装饰类B
class ConcreteDecoratorB extends Decorator {
  public function __construct(Component $component) {
    parent::__construct($component);
 
  }
 
  public function operation() {
    parent::operation();
    $this->addedOperationB();
  }
 
  public function addedOperationB() {
    echo 'Add Operation B '.PHP_EOL;
  }
}
 
 
class Client {
 
  public static function main() {
    /*
    do operation
    Add Operation A
    */
    $decoratorA = new ConcreteDecoratorA(new ConcreteComponent());
    $decoratorA->operation();
 
 
    /*
    do operation
    Add Operation A 
    Add Operation B 
    */
    $decoratorB = new ConcreteDecoratorB($decoratorA);
    $decoratorB->operation();
  }
 
}
 
Client::main();

概要: 上記がこの記事の全内容です。それはみんなの勉強に役立ちます。

関連する推奨事項:

MySQL データベースとセッション ダイアログを操作するための php メソッド

一般的に使用される 3 つのメソッドphp ツリーをトラバースするためのテクニック

php は mysql データベース ボリュームのバックアップを実装します

以上がPHP デザイン パターンのデコレータ パターンを簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。