>백엔드 개발 >PHP 튜토리얼 >PHP 디자인 패턴 중 관찰자 패턴에 대한 자세한 설명

PHP 디자인 패턴 중 관찰자 패턴에 대한 자세한 설명

韦小宝
韦小宝원래의
2017-11-15 10:16:551968검색

객체의 상태가 변경될 때마다 관련 종속 객체에 알림이 전송되고 자동으로 업데이트되도록 객체 간의 일대다 종속 관계를 정의합니다. 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 관찰자 패턴의 코드 예

PHP 관찰자 패턴

위 내용은 PHP 디자인 패턴 중 관찰자 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.