Behavior pattern -- Observer Pattern

1 观察者模式



2 实现代码

class Subject{
    private List<Observer> observerList = new ArrayList<>();
    private int state;

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
        for(Observer observer : observerList){
            observer.sout();
        }
    }
    public void addObserver(Observer observer){
        observerList.add(observer);
    }
}

abstract class Observer{
    public Subject subject;
    public abstract void sout();
}

class BinaryObserver extends Observer{
    public BinaryObserver(Subject subject) {
        this.subject = subject;
        this.subject.addObserver(this);
    }
    @Override
    public void sout() {
        System.out.println(Integer.toBinaryString(subject.getState()));
    }
}

class DecimalObserver extends Observer{
    public DecimalObserver(Subject subject) {
        this.subject = subject;
        this.subject.addObserver(this);
    }

    @Override
    public void sout() {
        System.out.println(Integer.toOctalString(subject.getState()));
    }
}

public class Test{
    public static void main(String[] args){
        Subject subject = new Subject();
        new BinaryObserver(subject);
        new DecimalObserver(subject);
        subject.setState(10);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_28197211/article/details/80903606