자바 의 디자인 모델-관찰자 모드[일명 게시/구독 모드]
자바 의 디자인 모델-관찰자 모델[일명 게시/구독 모델]4.567917.1.관찰자 모델 은 어떤 문 제 를 해결 하기 위해 서 입 니까?
핵심 논리
장점
단점
응용 장면
4.567917.6.관찰자 추상 류 를 구축 하고 관찰자 의 속성 을 추출 합 니 다
출력
자바 의 디자인 모델-관찰자 모드[일명 게시/구독 모드]
1.관찰자 모델 은 어떤 문 제 를 해결 하기 위해 서 입 니까?
우리 가 대상 간 의 다 중 의존 관 계 를 정의 할 때 한 대상 의 상태 가 바 뀌 면 그 대상 에 의존 하 는 모든 대상 이 알림 을 받 고 자동 으로 업 데 이 트 됩 니 다.
한 대상 의 상태 가 다른 대상 에 게 알려 주 는 문 제 를 바 꾸 고 사용 하기 쉽 고 낮은 결합 을 고려 하여 고도 의 협력 을 확보 해 야 한다.그래서 관찰자 모드 를 사용 합 니 다.
2.핵심 논리
추상 류 에 등 록 된 관찰자 의 List 대상 이 있 습 니 다.
3.장점
1.관찰자 와 피 관찰 자 는 추상 적 인 결합 이다.2.트리거 메커니즘 이 존재 한다.
4.단점
1.만약 에 관찰 대상 이 많은 관찰 자 를 가지 고 있다 면 모두 많은 시간 이 걸 릴 것 이 라 고 알려 준다.2.관찰자 와 피 관찰자 사이 에 순환 의존 이 존재 할 수 있 고 시스템 이 다운 될 수 있다.3.관찰 자 는 피 관찰자 에 게 상대 적 인 블랙박스 이다.관찰 자 는 결과 가 이렇다 는 것 만 알 지만 어떻게 이렇게 되 었 는 지 모른다.
5.응용 장면
1.게시/구독 2.한 대상 의 상태 변경 은 그 와 관련 된 대상 3.체인 전달 에 영향 을 주 고 한 대상 의 변경 은 그 와 관련 된 대상 에 영향 을 줄 수 있다.이 상태 로 인 한 관련 변경 은 관련 대상 의 관련 대상 에 영향 을 줄 수 있다.그러면 체인 관찰 모델 을 디자인 하여 변경 사항 을 전달 할 수 있다.
6.관찰자 추상 류 구축,관찰자 속성 분리
public abstract class Observer {
protected Subject subject;
public abstract void whileUpdate();
}
7.피 관찰자,주제 구축
@Getter
public class Subject {
private List observers = Lists.newArrayList();
private Object data;
public void whileDataUpdated(Object data) {
this.data = data;
notifyAllObserbers();
}
/**
*
*/
public void newObserver(Observer observer) {
observers.add(observer);
}
/**
*
*/
public void notifyAllObserbers() {
observers.forEach(Observer::whileUpdate);
}
}
8、관찰자 A B C 3 명 만 들 기
public class ObserverA extends Observer {
public ObserverA(Subject subject) {
this.subject = subject;
this.subject.newObserver(this);
}
@Override
public void whileUpdate() {
System.out.println(" A , :" + subject.getData().toString());
}
}
public class ObserverB extends Observer {
public ObserverB(Subject subject) {
this.subject = subject;
this.subject.newObserver(this);
}
@Override
public void whileUpdate() {
System.out.println(" B , :" + subject.getData().toString());
}
}
public class ObserverC extends Observer {
public ObserverC(Subject subject) {
this.subject = subject;
this.subject.newObserver(this);
}
@Override
public void whileUpdate() {
System.out.println(" C , :" + subject.getData().toString());
}
}
9.테스트
public class Main {
public static void main(String[] args) {
Subject subject = new Subject();
new ObserverA(subject);
new ObserverB(subject);
new ObserverC(subject);
subject.whileDataUpdated(" ");
subject.whileDataUpdated(" ");
}
}
10.출력
A , :
B , :
C , :
A , :
B , :
C , :
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jQuery 디자인 사상jQuery 의 기본 적 인 디자인 사상 과 주요 용법 은 바로'특정한 웹 페이지 요 소 를 선택 한 다음 에 이 를 조작 하 는 것'이다.이것 은 다른 자바 script 라 이브 러 리 와 구별 되 는 근본 적 인...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.