PHP設計モードシリーズ-オブザーバーモード


  • オブザーバモード
  • オブザーバ設計モードは、ターゲットオブジェクトのステータスを作成および表示しやすくし、コアオブジェクトと非結合のトップ機能を提供します.観察者設計モードは非常によく使われており、一般的に複雑なWEBシステムでは、観察者モードはコード設計の圧力を軽減し、コード結合を低減することができます.

  • シーンデザイン

  • 受注クラスの設計

  • オーダー作成が完了すると、EMAILを送信したり、オーダーのステータスを変更したりするなど、さまざまなアクションが行われます.

  • 元の方法は、これらの操作をcreate関数に書くことです.

  • しかし、受注作成クラスが膨大になるにつれて、このような操作は需要と急速な変動を満たすことができません.

  • この時、観察者パターンが現れました.

  • コード設計:
  • <?php
    //                          ,                  。
    //           ,      WEB   ,                  ,      。
    //          
    class order {
    
    	protected $observers = array(); //       
    	
    	//     
    	public function addObServer($type, $observer) {
    		$this->observers[$type][] = $observer;
    	}
    	
    	//     
    	public function obServer($type) {
    		if (isset($this->observers[$type])) {
    			foreach ($this->observers[$type] as $obser) {
    				$a = new $obser;
    				$a->update($this); //    
    			}
    		}
    	}
    	
    	//      
    	public function create() {
    		echo '    ';
    		$this->obServer('buy'); // buy  
    	}
    }
    class orderEmail {
    	public static function update($order) {
    		echo '          ';
    	}
    }
    class orderStatus {
    	public static function update($order) {
    		echo '      ';
    	}
    }
    $ob = new order;
    $ob->addObServer('buy', 'orderEmail');
    $ob->addObServer('buy', 'orderStatus');
    $ob->create();

     
    参考:『PHPデザインモード』Aaron Saray著