基于JAVA的设计模式之观察者模式

  • 介绍

    观察者模式又称发布/订阅模式,观察者模式定义了对象之间一对多的依赖关系,当一的一方状态发生变化时,依赖它的多的一方就会收到通知并且自动更新。

  • 类图

  

  • 代码
public interface Observer {
    public void update(String info);
}

public class StudentObserver implements Observer {
    private String name;
    private TeacherSubject teacherSubject;

    public StudentObserver(String name, TeacherSubject teacherSubject) {
        this.name = name;
        this.teacherSubject = teacherSubject;
        teacherSubject.addObserver(this);
    }

    public void update(String info) {
        System.out.println(name+"得到作业:"+info);
    }
}

public interface Subject {
    public void addObserver(Observer observer);
    public void deleteObserver(Observer observer);
    public void notifyObserver();
}

public class TeacherSubject implements Subject {
    private List<Observer>observers=new ArrayList<Observer>();
    private String info;
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    public void deleteObserver(Observer observer) {
        observers.remove(observer);
    }

    public void notifyObserver() {
        for (Observer observer:
             observers) {
            observer.update(info);
        }
    }

    public void setHomeWork(String info){
        this.info=info;
        System.out.println("今天的作业是"+info);
        this.notifyObserver();
    }
}

public class Main {
    public static void main(String[] args) {
        TeacherSubject teacher=new TeacherSubject();
        StudentObserver zhangSan=new StudentObserver("张三", teacher);
        StudentObserver LiSi=new StudentObserver("李四", teacher);
        StudentObserver WangWu=new StudentObserver("王五", teacher);
        teacher.setHomeWork("数据库课设");
    }
}

猜你喜欢

转载自www.cnblogs.com/hbsdljz/p/11130488.html