警报观察

Observer

Observer接口

public interface Observer {
    //通知
    void notice();
    String  getName();
}

Alarm

public class Alarm {
    List<Observer> observers = new ArrayList<>();

    public void addObserver(Observer o){
        observers.add(o);
    }

    public void removeObserver(Observer o){
        observers.remove(o);
    }

    public void notice(){
        for (Observer observer:this.observers){
            observer.notice();
        }
    }
}

Fighter

public class Fighter implements Observer{
    private String name;

    public Fighter() {
    }

    public Fighter(String name) {
        this.name = name;
    }

    @Override
    public void notice() {
        System.out.println(name+"士兵向城外集合...");
    }

    @Override
    public String getName() {
        return this.name;
    }
}

Worker

public class Worker implements Observer{
    private String name;

    public Worker() {
    }

    public Worker(String name) {
        this.name = name;
    }

    @Override
    public void notice() {
        System.out.println(name+"工人向城内集合...");
    }

    @Override
    public String getName() {
        return this.name;
    }
}

Main

public class Main {
    public static void main(String[] args) {
        Alarm alarm = new Alarm();
        Fighter f1 = new Fighter("peter");
        Fighter f2 = new Fighter("gus");
        Worker w1 = new Worker("al");
        Worker w2 = new Worker("patrick");

        alarm.addObserver(f1);
        alarm.addObserver(f2);
        alarm.addObserver(w1);
        alarm.addObserver(w2);

        alarm.notice();
    }
}

本文来自博客园,作者:CLAY——MRX,转载请注明原文链接:https://www.cnblogs.com/do-it-520/p/observer.html

韶华易逝,不能虚度年华。
原文地址:https://www.cnblogs.com/do-it-520/p/observer.html