php 모드 디자인 의 관찰자 모드 응용 실례 분석
이것 은 내 가 쓴《php 모드 디자인》의 다섯 번 째 편 이다.앞의 네 편 은 계속 공부 하고 인식 을 깊이 있 게 하 며 오늘 에 와 서 관찰자 모델 을 보면 이해 하기 쉽다 고 생각 합 니 다.이것 은 아마도 우리 가 티끌 모 아 태산 의 결과 일 것 이다.희망 은 여전히 끊임없이 진보 할 수 있다.
초 반 에는 이름 부터'관찰자 모드'의 관찰자 세 글자 정 보 량 이 많 았 다.온라인 게임 을 많이 해 본 어린이 신발 들 은 두 지주 라 도 게이머 외 에'관찰자'라 는 캐릭터 가 있다 는 것 을 알 아야 한다.우리 가 오늘 그 가 이야기 한 모델 디자인 에서 관찰자 도 마찬가지다.우선'주제'가 있어 야 한다.하나의 주제 가 있어 야만 관찰자 가 작은 걸상 을 옮 겨 한 무더기 에 모일 수 있다.그 다음으로 관찰 자 는 반드시 자신의 조작 이 있어 야 한다.그렇지 않 으 면 네가 한데 모여 서 할 일이 없어 도 아무런 의미 가 없다.
과정 을 대상 으로 하 는 측면 에서 볼 때 먼저 관찰자 가 주제 에 등록 하고 등록 한 후에 주 제 는 관찰자 에 게 해당 하 는 조작 을 하 라 고 알 리 면 모든 일이 끝난다.
대상 을 대상 으로 하 는 측면 에서 볼 때 테 마 는 등록 과 알림 의 인 터 페 이 스 를 제공 하고 관찰자 가 자신의 조작 인 터 페 이 스 를 제공한다.(이 관찰자 들 은 같은 인 터 페 이 스 를 가지 고 있다.)관찰 자 는 주제 의 인 터 페 이 스 를 이용 하여 주제 에 등록 하고 주 제 는 관찰자 인 터 페 이 스 를 이용 하여 관찰자 에 게 알려 준다.결합 도가 상당히 낮다.
어떻게 관찰자 등록 을 실현 합 니까?앞의 등록 자 모델 을 통 해 우리 에 게 아 이 디 어 를 제공 하기 쉬 우 니 이 대상 들 을 등록 트 리 에 추가 하면 되 잖 아 요.어떻게 통지 합 니까?이 는 더욱 간단 하 다.등록 트 리 를 옮 겨 다 니 며 모든 대상 이 인터페이스 에서 제공 하 는 조작 을 실현 하도록 한다.
<?php
//
interface Subject{
public function register(Observer $observer);
public function notify();
}
//
interface Observer{
public function watch();
}
//
class Action implements Subject{
public $_observers=array();
public function register(Observer $observer){
$this->_observers[]=$observer;
}
public function notify(){
foreach ($this->_observers as $observer) {
$observer->watch();
}
}
}
//
class Cat implements Observer{
public function watch(){
echo "Cat watches TV<hr/>";
}
}
class Dog implements Observer{
public function watch(){
echo "Dog watches TV<hr/>";
}
}
class People implements Observer{
public function watch(){
echo "People watches TV<hr/>";
}
}
//
$action=new Action();
$action->register(new Cat());
$action->register(new People());
$action->register(new Dog());
$action->notify();
실행 결과:Cat watches TV
--------------------------------------------------------------------------------
People watches TV
--------------------------------------------------------------------------------
Dog watches TV
--------------------------------------------------------------------------------
패턴 이란 코드 디 테 일 에 얽 매 일 필요 가 없다 는 생각 이 더 많다.관찰자 모델 은 두 개의 독립 된 유형 이 인 터 페 이 스 를 이용 하여 복잡 해 야 할 일 을 완성 하 는 것 을 더 많이 나 타 냈 다.테마 클래스 를 이용 하지 않 으 면 인 스 턴 스 를 계속 반복 해서 만 들 고 작업 을 수행 해 야 합 니 다.지금 은 인 스 턴 스 만 만 들 면 됩 니 다.작업 을 수행 하 는 일 은 알림 방법 을 한 번 만 호출 하면 됩 니 다.
시 작 된 단일 모델 에서 저 는 코드 를 어떻게 실현 하 는 지 한 걸음 한 걸음 고려 했 습 니 다.지금까지 대부분 코드 를 한 마디 씩 가 져 왔 습 니 다.사실은 앞에서 계속 쌓 인 토대 위 에 세 워 졌 습 니 다.디자인 모델 을 계속 배우 면 대상 을 대상 으로 하 는 프로 그래 밍 에 대한 사 고 를 깊이 할 수 있 을 것 같 습 니 다.물론 탁상공론 은 금물이다.더 많은 연습 에 매진 하 는 것 이 좋 겠 다~~
관찰자 모드 로 이상 정 보 를 처리 합 니 다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.