객체의 상태가 변경될 때마다 관련 종속 객체에 알림이 전송되고 자동으로 업데이트되도록 객체 간의 일대다 종속 관계를 정의합니다. Observer 패턴의 별칭에는 게시/구독 패턴, 모델/뷰 패턴, 소스/리스너 패턴 또는 종속 항목 패턴이 포함됩니다. 관찰자 패턴은 객체 행동 패턴입니다. 관찰자 패턴객체의 일대다 종속성을 정의하면 객체의 상태가 변경될 때 모든 종속 항목이 알림을 받고 자동으로 업데이트됩니다.
<?php /** * 观察者模式 * @author: Mac * @date: 2012/02/22 */ abstract class Pa { private $_observers = array(); public function register($sub) { } public function trigger() { } } class Paper extends Pa { /* 主题 */ private $_observers = array(); // 存放new的对象 public function register($sub) { /* 注册观察者 */ $this->_observers[] = $sub; } public function trigger() { /* 外部统一访问 */ if (!empty($this->_observers)) { foreach ($this->_observers as $observer) { $observer->update(); } } } } /** * 观察者要实现的接口 */ interface Observerable { public function update(); } class Subscriber1 implements Observerable //观察者 { public function update() { echo "观察者1收到执行通知 执行完毕\n"; } } class Subscriber2 implements Observerable //观察者2 { public function update() { echo "观察者2收到执行通知 执行完毕\n"; } } /* 测试 */ $paper = new Paper(); $paper->register(new Subscriber1()); $paper->trigger();
관찰자 패턴은 A를 매우 자주 사용하는 방법입니다! 모바일 애플리케이션, 웹 애플리케이션, 데스크탑 애플리케이션 등 디자인 패턴은 거의 모든 곳에 존재하며, 일대일 또는 일대일을 포함하는 객체 간의 연결을 실현하기 위한 완벽한 솔루션을 제공합니다. 일대다 개체 상호 작용 시나리오에서 사용할 수 있습니다.
관련 추천:
위 내용은 PHP 디자인 패턴 중 관찰자 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!