>  기사  >  백엔드 개발  >  PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?

PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?

慕斯
慕斯원래의
2021-06-23 11:23:021630검색

관찰자 패턴은 우리에게 익숙하지 않을 수 있습니다. 이는 관찰된 클래스의 상태가 변경될 때 클래스가 다른 클래스의 상태를 관찰할 수 있게 하고 관찰 클래스가 알림을 받을 수 있다는 것을 의미합니다. 해당 조치를 취합니다. 관찰자 패턴은 구성 요소 간의 긴밀한 결합을 방지하는 또 다른 방법을 제공하므로 이 기사에서는 관찰자 패턴이 무엇인지 논의해 보겠습니다.

관련 권장사항: PHP의 팩토리 패턴과 팩토리 메소드 패턴은 무엇인가요?

관찰자:

관찰된 클래스의 상태가 변경되면 관찰 클래스는 알림을 받고 해당 클래스가 다른 클래스의 상태를 관찰할 수 있는 이벤트 시스템입니다. 관찰자 패턴은 구성 요소 간의 긴밀한 결합을 방지하는 또 다른 방법을 제공합니다.

코드를 예로 들어 보겠습니다. 새 파일을 만든 다음 클래스를 정의하고 다음과 같은 멤버 속성을 입력합니다. 관찰자를 저장하는 데 사용되는 배열 그런 다음 관찰자를 저장하고 관찰자를 추가하는 데 사용되는 메서드를 정의합니다. 관찰된 사람이 행동을 수행하면 관찰자가 알림을 받고 특정 반응을 하도록 합니다.

<?php
class Man
{
//用来存放观察者
protected $observers = [];
//添加观察者方法
function addObserver($observer)
{
  $this->observers[]=$observer;
}
//花钱方法
function buy()
{
//当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应
foreach ($this->observers as $girl) {
  $girl->pome();
}
}
}
class GirlFriend
{
function pome()
{
echo&#39;我只明白一件事,爱一个人,是那么痛苦<br />&#39;;
}
}
//创建对象
$xiaoming = new Man();
$xiaohua =new GirlFriend();
$xiaoli = new GirlFriend();
//添加观察者
$xiaoming->addObserver( $xiaohua); 
$xiaoming->addObserver($xiaoli);
$xiaoming->buy();

실행 결과는 다음과 같습니다.

PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?

관찰자를 추가하는 방법이 있다면 관찰자를 삭제하는 방법도 있으므로 삭제 관측치를 추가해야 합니다. 저자의 방법,

function delObserver($observer)
{
//查找对应值在数组中的键
$key = array_search($observer,$this->observers);
//根据键删除值,并且数组重新索引
array_splice($this->observers, $key, 1);
}
}

//삭제

$xiaoming->delObserver( $xiaohua);

코드는 다음과 같습니다.

PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?

추천 학습: "

PHP Video Tutorial"

위 내용은 PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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