B04 观察者模式 示例(二) 自己实现的观察者模式

一、类图

观察者模式.png

二、示例代码 - 对猫叫的反应

  • 1/4_Observer
public interface Observer {

    void response();

}
  • 2/4_ConcreteObserver
    Dog
public class Dog implements Observer {

    @Override
    public void response() {
        System.out.println("Dog wang~wang~wang~");
    }

}

 Mouse

public class Mouse implements Observer {

    @Override
    public void response() {
        System.out.println("Mouse run away...");
    }

}
  • 3/4_Subject
public abstract class Subject {

    protected ArrayList<Observer> observers = new ArrayList<>();

    public abstract void attach(Observer observer);

    public abstract void detach(Observer observer);

    public abstract void cry();

}
  • 4/4_ConcreteSubject - Cat
public class Cat extends Subject {

    @Override
    public void attach(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void detach(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void cry() {
        System.out.println("Cat cry!");
        System.out.println("-------------------");

        for(Object obj : observers){
            ((Observer)obj).response();
        }
    }

}
  • Client
public class Client {

    public static void main(String[] args) {
        Observer dog = new Dog();
        Observer mouse = new Mouse();
        Subject cat = new Cat();

        cat.attach(dog);
        cat.attach(mouse);

        cat.cry();
    }

}

输出

Cat cry!
-------------------
Dog wang~wang~wang~
Mouse run away...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容