2015.01.16
PHPによるデザインパターン
非常に残念なことですが、PHPではデザインパターンはほぼ無視されてきました。
でも新しいバージョンのPHP5(SPL)からプログラミング言語としてエンタープライズ分野向けの開発に適されてます。
これからいくつかのデザインパターンを選んでPHPでの実装方法を学びましょう。
今回は、まずObserverパターンについて説明します。
Observer パターンとは状態変化を監視することを目的としてます、英語で「観察者」を意味する単語です。
”An observer is someone who watches or pays attention to something”、即ちオブジェクトを監視します。
Observer とはもっと深い意味で監視よりも通知に重点にしてます。
監視する対象はオブジェクトということですので、観察対象のオブジェクトが変化したときに通知して、変化などをほかのオブジェクトにも伝えるためのパターンです。
Observer パターンを使用してオブジェクト間に疎結合の関係を作成します。
疎結合というのは大規模プロジェクトでは非常に重要です。疎結合の概念はもっとも複雑なことなので、疎結合をもっと知りたい方はこちら(http://www.itmedia.co.jp/im/articles/0705/08/news100.html)をご参考ください。
Observerパターンを利用することでオブジェクト対象のあいだに簡単な協約を結ぶことによって
両方の間の結びつきを弱めることができます。
Observerパターンの適用例
Observerパターンのクラス図と構成要素は、次のようになります。
オブジェクト状態が変更する際にいろんなオブジェクト との連係動作の様子を簡単に説明します。
Subjectクラス
観測対象のクラスです、すべての観測対象に対しての引用を保存します。
・オブジェクトを登録
・オブジェクトを削除
・オブジェクトに通知
Observerクラス
観測クラスです、Subjectクラスが更新する際に自己更新を行います。
ConcreteSubjectクラス
Subjectクラスのサブクラスで、Observerクラスに影響する状態を保持しています。
自身の内部状態が変更・更新があった場合はすべての登録されてるオブジェクトに通知します。
ほかのサブクラスで実装したほうがおすすめです。
ConcreteObserverクラス
いつもSubjectクラスの状態を一致して、最新状態保持しています。
このパターンでは各オブジェクトの関係、関連性はゆるい結合をして協調しながら動いてます、
そういう意味でこれから実際の現場で上記クラスを独立して拡張することが簡単にできます。
以上です。
次回は上記Observerパターンのソースコードを展示して検討させてください。