php 모드 디자인 의 관찰자 모드 응용 실례 분석

본 논문 의 사례 는 phop 모델 디자인 의 관찰자 모델 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
이것 은 내 가 쓴《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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기