디자인 모드 - Observe
관찰자 모드 의 참여 자:
1. Subject (목표), 목표 가 그것 을 아 는 관찰자.여러 명의 관찰자 가 같은 목 표를 관찰 할 수 있다.관찰자 의 인 터 페 이 스 를 등록 하고 삭제 합 니 다.
2. Observer (관찰자) 는 목표 가 바 뀌 었 을 때 알림 을 받 은 대상 에 게 인 터 페 이 스 를 정의 합 니 다.
3. Concrete Subject (구체 적 인 목표) 는 관련 상 태 를 각 구체 적 인 목표 에 저장 하고 구체 적 인 목표 의 내부 상태 가 바 뀔 때 등 록 된 모든 관찰자 에 게 통지 합 니 다.
4. Concrete Observe (구체 적 인 관찰자) 는 Concrete Subject 대상 을 가리 키 는 인용 을 유지 합 니 다.관련 상 태 를 저장 하고 이 상 태 는 목표 의 상태 와 일치 합 니 다.
간단하게 다음 과 같이 실현 합 니 다.
1. Subject, 코드 는 다음 과 같 습 니 다.
public interface Subject {
public void register(Object object);
public void remove(Object object);
public void notifyObserve();
public void setMeeting(String meeting);
}
2. ConcreteSubject, 코드 는 다음 과 같 습 니 다.public class ConcreteSubject implements Subject {
private List<Object> list = new ArrayList<Object>();
private String meeting;
@override
public void register(Object object) {
list.add(object);
}
@override
public void remove(Object object) {
list.remove(object);
}
@override
public void notifyObserver() {
for(Object object : list) {
Observe observe = (Observe) object;
observe.update(meeting);
}
}
@override
public void setMeeting(String meeting) {
this.meeting = meeting;
notifyObserver();
}
}
3. Observe, 코드 는 다음 과 같 습 니 다.
public interface Observer {
public void update(String info);
}
4. ConcreteObserver, 코드 는 다음 과 같 습 니 다.
public class ObserverA implements Observer {
@override
public void update(String info) {
// ,ObserverA doSomething
System.out.println("ObserverA do something");
}
}
public class ObserverB implements Observer {
@override
public void update(String info) {
// ,ObserverB doSomething
System.out.println("ObserverB do something");
}
}
5. 클 라 이언 트 코드 는 다음 과 같다.
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer observerA = new ObserverA();
Observer observerB = new ObserverB();
subject.register(observerA);
subject.register(observerB);
subject.setMeeting("there have a change");
}
전송 주소:http://blog.csdn.net/seablue_xj/article/details/5490563
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.