标签:添加 直接 mamicode src rgs sub int 行为型 发布-订阅
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
优点:
缺点:
实现观察者模式时要注意具体目标对象和具体观察者对象之间不能直接调用,否则将使两者之间紧密耦合起来,这违反了面向对象的设计原则。
观察者模式的主要角色如下。
结构图:
1)抽象主题
abstract class Subject { List<Observer> obj=new ArrayList<Observer>(); //添加观察者 public void addObserver(Observer o) { obj.add(o); } ; //删除观察者 public void removeObserver(Observer o) { obj.remove(o); } //观察者执行的动作 public abstract void notifyObserver(); }
2)观察这接口
public interface Observer { void observer(); }
3)具体的主题/目标类
public class ConcreteSubject extends Subject{ @Override public void notifyObserver() { for(Observer o:obj) { o.observer(); } } }
4)具体的观察者
观察者1
public class Observer1 implements Observer{ @Override public void observer() { System.out.println("我是观察者1"); } }
观察者2
public class Observer2 implements Observer{ @Override public void observer() { System.out.println("我是观察者2"); } }
5)测试类
public class ObserverTest { public static void main(String[] args) { ConcreteSubject con=new ConcreteSubject(); Observer1 ob1=new Observer1(); Observer2 ob2=new Observer2(); con.addObserver(ob1); con.addObserver(ob2); con.notifyObserver(); } }
6)测试结果
标签:添加 直接 mamicode src rgs sub int 行为型 发布-订阅
原文地址:https://www.cnblogs.com/kjcc/p/12972857.html