• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java-23中设计模式之观察者模式

android 搞代码 3年前 (2022-03-01) 16次浏览 已收录 0个评论
文章目录[隐藏]

Java 23中设计模式之观察者模式

一:定义
观察者模式是对象的行为模式,又叫公布-订阅(Publish/Subscribe)模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会告诉所有观察者对象,使它们可能自动更新本人

  • Subject(被察看的对象接口):规定ConcreteSubject的对立接口;每一个Subject被观察者能够有多个观察者Observer
  • ConcreteSubject(具体被观察者对象):保护队所有具体观察者的援用的列表,一旦状态发生变化时会发送告诉给所有注册的观察者
  • Observer(观察者接口):规定ConcreteObserver的对立接口,定义一个update()办法,在被察看对象状态扭转是会被调用
  • ConcreteObserver(具体观察者):保护一个对ConcreteSubject的援用;特定状态与ConcreteSubject同步; 实现Observer接口,update()办法的作用:一旦检测到Subject有变动,就更新信息
    二:观察者模式的实现
    1.定义观察者主题对象(被观察者)
/**
 * 观察者主题对象,即被观察者
 */
public interface Subject {

    /**
     * 订阅操作
     */
    void attach(Observer observer);

    /**
     * 勾销订阅操作
     */
    void detach(Observer observer);

    /**
     * 告诉变动
     */
    void notifyChanged();
}

2.定义观察者

/**
  * 观察者
  */
 public interface Observer {

     /**
      * 接管变动告诉
      */
     void update();
 }

3.被察看的实现类RealSubject具体实现类

public static class RealSubject implements Subject {
private List<Observer> observerList = new ArrayList<>();

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

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

@Override
public void notifyChanged() {
    for (Observer observer : observerList) {
        observer.update();
    }
}

4.观察者的具体实现类RealObject

public static class RealObject implements Observer {
    @Override
    public void update() {
        System.out.println("接管到了告诉");//观察者接管到音讯
    }
}

5.创立被观察者对象,和观察者对象,实现订阅

public static void main(String[] args) {
    Subject subject = new RealSubject();//被观察者对象
    Observer observer = new RealObject();//观察者对象
    subject.attach(observer);//被观察者订阅了观察者
    subject.notifyChanged();//被察看发送了告诉音讯
}

结尾:生在红旗下,长在春风里


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java-23中设计模式之观察者模式
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址