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

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

墨辰丷
リリース: 2023-03-31 12:38:01
オリジナル
1821 人が閲覧しました

この記事では主に 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート