자바 디자인 모드 - 리 셋 함수 와 관찰자 모드
다음은 리 셋 의 기본 모델 입 니 다.
public class A {
private CallBack callback;
//
public void register(CallBack callback){
this.callback = callback;
}
//
public void call(){
callback.oncall();
}
}
public interface CallBack {
public void oncall();
}
public static void main(String[] args) {
A a = new A();
a.register(new CallBack() {
@Override
public void oncall() {
System.out.println(" ");
}
});
a.call();
}
클래스 A 를 Button 으로 바 꾸 면 CallBack 을 OnClickListener 로 바 꾸 고 register 함 수 를 setOnclickListener 로 바 꾸 면 안 드 로 이 드 에 클릭 이 벤트 를 설정 하 는 것 과 같 습 니 다.callback.oncall();이벤트 자극 을 클릭 한 후에 호출 된 것 뿐 입 니 다.
관찰자 모드:
대상 간 의 한 쌍 이상 의 의존 관 계 를 정의 합 니 다. 대상 상태 가 바 뀌 면 모든 의존 대상 이 알림 을 받 고 자동 으로 업 데 이 트 됩 니 다.
목표:
public class Subject {
List<Observer> lists = new ArrayList<Observer>();
//
public void register(Observer observer){
lists.add(observer);
}
public void _notify(){
for (Observer observer : lists) {
observer.update();
}
}
public void unRegister(Observer observer){
lists.remove(observer);
}
}
观察者抽象接口
public interface Observer { public void update(); }
관찰자public class ConcreteObserver1 implements Observer{ public void update() { System.out.println("ConcreteObserver1 "); } }
观察者2
public class ConcreteObserver2 implements Observer{ public void update() { System.out.println("ConcreteObserver2 "); } }
public static void main(String[] args) { Observer observer1 = new ConcreteObserver1(); Observer observer2 = new ConcreteObserver2(); Subject subject = new Subject(); subject.register(observer1); subject.register(observer2); subject._notify(); // 1 subject.unRegister(observer1); subject._notify(); }
目标对象保存了各个观察者的引用,当需要通知时发送通知。
实际上,回调是观察者模式的简单形式。观察者模式也就是将回调上升到设计模式的理论高度上了而已。
将回调例子中的main方法改成
public static void main(String[] args) { CallBack callback = new CallBackImp(); A a = new A(); a.register(callback); a.call(); }
增加CallBack的实现类CallBackImp
public class CallBackImp implements CallBack{ @Override public void oncall() { System.out.println(" "); } }
이렇게 보면 일치 합 니 다. 차이 점 은 관찰자 모델 에서 목표 류 는 모든 관찰자 의 인용 을 지 켰 고 리 턴 에 서 는 하나의 인용 만 지 켰 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.