PHP 디자인 모드(관찰자 모드)
소개 하 다.
현재 두 파 가 있 습 니 다.어떤 사람 은 디자인 모델 을 사용 하 는 것 을 건의 합 니 다.어떤 사람 은 디자인 모델 을 사용 하 는 것 을 건의 하지 않 습 니 다!이것 은 문장 을 쓰 는 것 과 마찬가지 로 어떤 사람들 은 문장 이 격식 에 따라 가 는 것 을 좋아한다.예 를 들 어 서 사적 인 문장,시간,장소,인물,사건 등 이다.어떤 사람 은 잡문 이나 산문 을 쓰 는 것 을 좋아 하고,어떤 사람 은 시 와 사 를 쓰 는 것 을 좋아한다!현재 코드 를 쓰 는 것 은 글 을 쓰 는 것 과 유사 하지만 글 을 쓰 는 것 보다 더 많은 기능 이 필요 한 곳 이 있 습 니 다!글 을 많이 쓰 면 보통 우수한 글 을 쓸 수 있 고 코드 도 마찬가지 로 많이 써 도 많은 코드 를 쓸 수 있 습 니 다!많은 경우 에 내 가 디자인 모델 을 볼 때 어떤 디자인 모델 은 나의 코드 습관 에 만 부합된다.그러나 네가 억지로 그것 을 끼 워 넣 으 면 오히려 그 반대 가 된다.많은 경우 에 방법 을 배 웠 습 니 다.응용 에서 자신 도 모 르 게 이런 방법 을 사용 해 야 그 도 를 파악 할 수 있 습 니 다.그러나 방법 에 얽 매 이지 마 세 요.이른바'무 수 승 유 수'입 니까?내 가 디자인 모델 을 배 우 는 취 지 는 바로 이런 물건 이 있다 는 것 을 알 고 있 는 것 이다.머 릿 속 에 이런 인상 이 있 더 라 도 그것 을 얽 매 이지 않 을 것 이다!만약 디자인 모델 이 당신 의 습관 에 부합 되 지 않 는 다 면 당신 이 코드 를 읽 는 데 오히려 불리 합 니 다!관찰자 모드 는 대상 의 다 중 의존 도 를 정의 합 니 다.그러면 대상 이 상 태 를 바 꿀 때 모든 의존 자 는 알림 을 받 고 자동 으로 업 데 이 트 됩 니 다!
설계 원칙
관찰자 모드 에서 주제 의 상태 와 관찰자 의 수 를 바 꿀 수 있다.이 모드 를 사용 하면 주제 상태 에 의존 하 는 대상 을 바 꿀 수 있 지만 주 제 를 바 꿀 필요 가 없다.프로그램 에서 변 할 수 있 는 부분 을 찾 아 고정 적 이 고 변 하지 않 는 부분 과 분리 하 세 요!주제 와 관찰 자 는 모두 인 터 페 이 스 를 사용한다.관찰 자 는 주제 의 인 터 페 이 스 를 이용 하여 주제 에 등록 하고 주 제 는 관찰자 인 터 페 이 스 를 이용 하여 관찰자 에 게 알 린 다.이렇게 하면 둘 사이 가 정상적으로 작 동 하고 동시에 느슨 한 결합 의 장점 을 가지 게 할 수 있다.인터페이스 프로 그래 밍 을 위 한 프로 그래 밍 이 아 닙 니 다!관찰자 모델 은'조합'을 이용 하여 많은 관찰자 들 을 주제 에 조합 했다.대상(관찰자-주제)간 의 이런 관 계 는 계승 을 통 해 발생 하 는 것 이 아니 라 운영 할 때 조합 을 이용 하 는 방식 으로 발생 한다.조합 을 많이 사용 하고 계승 을 적 게 사용 하 라!
코드
<?php
/**
*
* @author: Mac
* @date: 2012/02/22
*/
class Paper{ /* */
private $_observers = array();
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 Subscriber implements Observerable{
public function update(){
echo "Callback
";
}
}
다음은 테스트 코드 입 니 다.
/* */
$paper = new Paper();
$paper->register(new Subscriber());
//$paper->register(new Subscriber1());
//$paper->register(new Subscriber2());
$paper->trigger();
총결산새로운 대상 이 채 워 지 려 면 테마(관찰 가능 한 사람 이 라 고도 함)에 등록(등록 방식 이 많 고 구조 할 때 나 프레임 워 크 가 방문 하 는 인터페이스 에서 등록 할 수 있 습 니 다)한 다음 에 코드 를 새로운 대상 의 인터페이스 에서 직접 진행 할 수 있 습 니 다.이것 은 주제 대상 과 관찰자 대상 의 결합 도 를 낮 추 었 다.좋 은 디자인 모델 은 코드 에 직접 들 어가 지 않 고 머 릿 속 에 들어간다.
PHP 디자인 모델(관찰자 모드)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP 관찰자 모드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.