软件
观察者模式(观察者模式)


public class Subject {    private List<Observer> observers = new ArrayList<>();        private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;        //状态发生变化        notifyAllObserver();    }        public void attach(Observer observer) {        observers.add(observer);    }        public void detach(Observer observer) {        observers.remove(observer);    }        public void notifyAllObserver() {        observers.forEach(Observer::update);    }}
public interface Observer {    void update();}
public class ObserverImpl implements Observer {    private Subject subject;    private String name;    public ObserverImpl(Subject subject, String name) {        this.subject = subject;        this.name = name;        this.subject.attach(this);    }    @Override    public void update() {        System.out.printf("观察者 %s 状态变化为 %s", name, subject.getState());        System.out.println();    }
public class ObserverApp {    public static void main(String[] args) {       //定义一个主题        Subject subject = new Subject();      、        //定义观察者        new ObserverImpl(subject,"OneSubject");        new ObserverImpl(subject,"SecondSubject");       //数据变更        subject.setState("new state");    }}
输出:观察者 oneSubject 状态变化为 new state观察者 SecondSubject 状态变化为 new state

观察者模式所做的工作其实就是在解除耦合,让耦合的双方都依赖于抽象,而不是依赖于具体实现,从而使得各自带变化都不会影响另外一边的变化。


顶一下()     踩一下()

热门推荐

发表评论
0评