观察者模式用于描述对象之间的依赖关系,它引入了观察者和观察目标两类不同的角色,并且提供抽象层,使得增加新的观察者和观察目标都很方便。
模式定义:对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得知通知并自动更新。观察者模式又叫做 发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。观察者模式是一种对象行为型模式。
代码实现:
(1) 抽象目标类
public abstract class MyuSubject{
protected ArrayList observers=new ArrayList();
public void attach(MyObserver observer){
observers.add(observer);
}
public void remove(MyObserver observer){
observers.remove(observer);
}
public abstract void cry();
}
(2)抽象观察者类
public interface MyObserver {
void respose();
}
(3)具体目标类
public class cat extends MyuSubject{
public void cry(){
System.out.println("观察目标改变"):
System.out.println("观察者会发生的变化如下:"):
for(Object obs:observers){
((MyObserver )obs).response();
}
}
}
(4)具体观察者类
public class Mouse implements MyObserver {
public void response(){
System.out.println("老鼠跑"):
}
}
(5)具体观察者类
public class Dog implements MyObserver {
public void response(){
System.out.println("狗跑"):
}
}
(6)客户端测试类
public class clent{
public static void main(String []args){
MyuSubject myuSubject=new Cat();
MyObserver ob1=new Dog();
MyObserver ob2=new Mouse();
myuSubject.attach(ob1);
myuSubject.attach(ob2);
myuSubject.cry();
}
}