[PHPのオブザーバーパターンデザインパターン]

 ときにオブザーバーパターンを使用してオブジェクト間の多くの関係。オブジェクトが変更されたとき、例えば、それは自動的に従属オブジェクトを通知されます。Observerパターンは、モデルのタイプに属します。

<?PHPの
 クラス件名{
     プライベート の$ observer_list プライベート $ num個

    パブリック 関数__construct(){
         $この - > observer_list = 新しいSplDoublyLinkedList(); 
    } 

    パブリック 関数(観察アタッチ$オブザーバ){
         $この - > observer_list->プッシュ($オブザーバ
    } 

    パブリック 関数 setNum($のNUM ){
         $この - > NUM = $ NUM これを$ - > 通知();
    }

    パブリック 関数getNum(){
         戻り $この - > NUM。
    } 

    パブリック 関数は、(){通知
         するforeach$この - > observer_list として $オブザーバ{)
             $オブザーバ - > ;更新()
        } 
    } 
} 

抽象 クラスオブザーバー{
     公共 の$ SUBJ パブリック 関数 __construct(被写体の$ SUBJ ){
         $この - > SUBJ = $ SUBJ $この- > subj->(添付$この)。
    } 

    抽象 関数更新()。
} 

クラス BinObserverは延びオブザーバー{
     パブリック 関数の更新(){
         エコー "二进制更新:"。decbin$この - > subj-> getNum()) "\ n"は
    } 
} 

クラス OctObserverは延びオブザーバー{
     パブリック 関数の更新(){
         エコー "八进制更新:"。煎じ出す$この - > subj-> getNum()) "\ n"は

HexObserverは延びオブザーバー{
     パブリック 関数の更新(){
         エコー "十六进制更新:"。dechex$この - > subj-> getNum()) "\ n"は
    } 
} 

$対象 = 新しいテーマ()。
新しい BinObserver($対象)。
新しい OctObserver($対象)。
新しい HexObserver($対象)。
$主題 - > setNum(22)。

結果:

バイナリアップデート:10110 
進更新: 26 
進更新: 16

 

ます。https://www.cnblogs.com/itsuibi/p/11058164.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34310127/article/details/93594363
おすすめ