관찰자 패턴은 우리에게 익숙하지 않을 수 있습니다. 이는 관찰된 클래스의 상태가 변경될 때 클래스가 다른 클래스의 상태를 관찰할 수 있게 하고 관찰 클래스가 알림을 받을 수 있다는 것을 의미합니다. 해당 조치를 취합니다. 관찰자 패턴은 구성 요소 간의 긴밀한 결합을 방지하는 또 다른 방법을 제공하므로 이 기사에서는 관찰자 패턴이 무엇인지 논의해 보겠습니다.
관련 권장사항: 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'我只明白一件事,爱一个人,是那么痛苦<br />'; } } //创建对象 $xiaoming = new Man(); $xiaohua =new GirlFriend(); $xiaoli = new GirlFriend(); //添加观察者 $xiaoming->addObserver( $xiaohua); $xiaoming->addObserver($xiaoli); $xiaoming->buy();실행 결과는 다음과 같습니다. 관찰자를 추가하는 방법이 있다면 관찰자를 삭제하는 방법도 있으므로 삭제 관측치를 추가해야 합니다. 저자의 방법,
function delObserver($observer) { //查找对应值在数组中的键 $key = array_search($observer,$this->observers); //根据键删除值,并且数组重新索引 array_splice($this->observers, $key, 1); } }
//삭제
$xiaoming->delObserver( $xiaohua);코드는 다음과 같습니다. 추천 학습: "
PHP Video Tutorial"
위 내용은 PHP의 관찰자 패턴은 무엇입니까? 그것을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!