package com.modle;
import java.util.Vector;
import org.omg.CORBA.OBJECT_NOT_EXIST;
/**
* 观察者模式
* @author k560
*
*/
/*观察者接口*/
public interface Observer {
/*观察到被观察者行为后执行的行为*/
void doSome();
}
/*观察者1*/
class Observer1 implements Observer{
@Override
public void doSome() {
System.out.println("观察者1观察到了");
}
}
/*观察者2*/
class Observer2 implements Observer{
@Override
public void doSome() {
System.out.println("观察者2观察到了");
}
}
/*抽象被观察者*/
abstract class Subject{
Vector<Observer> observers=new Vector<Observer>();
/*添加观察者*/
public void addObserver(Observer observer){
observers.add(observer);
}
/*删除观战者*/
public void removeObserver(Observer observer){
observers.remove(observer);
}
/*通知所有观察者*/
protected void notifyAllObserver() {
for (Observer observer : observers) {
observer.doSome();
}
}
protected abstract void show();
}
class SubjectA extends Subject{
@Override
protected void show() {
System.out.println("被观察者行动了");
this.notifyAllObserver();
}
}
public class TestObserver{
public static void main(String[] args) {
/*创建被观察者*/
Subject subject=new SubjectA();
/*添加观察者*/
Observer observer1=new Observer1();
Observer observer2=new Observer2();
subject.addObserver(observer1);
subject.addObserver(observer2);
/*被观察者执行方法*/
subject.show();
/*删除观察者1*/
subject.removeObserver(observer1);
subject.show();
}
}(行为型模式三)观察者模式
最新推荐文章于 2021-02-12 10:15:19 发布
本文深入探讨了观察者模式的原理与应用,通过具体代码实例展示了如何在Java中实现该模式,包括观察者接口、具体观察者类及抽象被观察者类的使用。

1331

被折叠的 条评论
为什么被折叠?



