当前位置: 首页 > wzjs >正文

大连网站设计团队网站代理公司

大连网站设计团队,网站代理公司,北京网站搜索引擎优化推广,网站建设模块一项目三观察者模式用于建立对象间一对多的依赖关系。当一个对象(主题)状态改变时,所有依赖它的对象(观察者)都会自动收到通知并更新。核心组件主题 (Subject)维护观察者列表,提供注册/注销方法,通知观察…

观察者模式用于建立对象间一对多的依赖关系。当一个对象(主题)状态改变时,所有依赖它的对象(观察者)都会自动收到通知并更新。

核心组件
  1. 主题 (Subject)
    维护观察者列表,提供注册/注销方法,通知观察者状态变化

    import java.util.ArrayList;
    import java.util.List;public abstract class Subject {private List<Observer> observers = new ArrayList<>();public void attach(Observer o) {observers.add(o);}public void detach(Observer o) {observers.remove(o);}public void notifyObservers() {for (Observer o : observers) {o.update();}}
    }
    

  2. 观察者 (Observer)
    定义更新接口,接收主题通知

    public interface Observer {void update();
    }
    

具体实现示例

主题实现类

public class ConcreteSubject extends Subject {private int state;public int getState() {return state;}public void setState(int state) {this.state = state;notifyObservers();  // 状态变化时通知观察者}
}

观察者实现类

public class ConcreteObserver implements Observer {private String name;private ConcreteSubject subject;public ConcreteObserver(String name, ConcreteSubject subject) {this.name = name;this.subject = subject;subject.attach(this);  // 自动注册到主题}@Overridepublic void update() {System.out.println(name + " 收到更新: 状态值 = " + subject.getState());}
}

使用示例
public class Client {public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();new ConcreteObserver("观察者A", subject);new ConcreteObserver("观察者B", subject);subject.setState(10);  // 触发通知subject.setState(20);  // 再次触发通知}
}

输出结果
观察者A 收到更新: 状态值 = 10
观察者B 收到更新: 状态值 = 10
观察者A 收到更新: 状态值 = 20
观察者B 收到更新: 状态值 = 20

模式优势
  1. 松耦合:主题无需知道观察者的具体实现
  2. 动态关系:可随时添加/删除观察者
  3. 广播通信:一次状态变化可通知多个对象
  4. 符合开闭原则:新增观察者无需修改主题代码
典型应用场景
  • GUI 事件处理(如按钮点击)
  • 消息订阅系统
  • 股票价格变动通知
  • 游戏中的成就系统
  • 分布式系统的状态同步

注意:Java 内置 java.util.ObservableObserver 接口已过时(Java 9+),推荐使用自定义实现或 java.beans.PropertyChangeListener 替代。

http://www.dtcms.com/wzjs/469860.html

相关文章:

  • 凡科快图一键抠图深圳seo优化外包
  • 响应式网站 谷歌 移动网站网页分析报告案例
  • 外包岗位为什么不能去上海seo推广
  • 主机屋做淘宝客网站站长之家怎么用
  • 如何提高网站的访问速度宁波网站推广网站优化
  • 028网站建设工作室宁波seo公司
  • 推广的几种方式优化大师手机版下载安装app
  • 个人创业做网站外贸如何推广
  • 301的网站用什么来做近期新闻大事
  • 盐城网站开发苏州百度推广分公司电话
  • 网站开发技术可行性免费推广有哪些
  • 购物商城网站开发功能消百度自然排名优化
  • 给人做网站多少钱榆林百度seo
  • 如何查询网站已经提交备案百度资源搜索引擎
  • 长沙建站网站模板哪家公司网站做得好
  • dede 网站名称 空的百度竞价点击价格公式
  • 做软装有什么网站找图片提高网站搜索排名
  • 做网站开直通车百度竞价推广流程
  • wordpress json插件安装宿州百度seo排名软件
  • 如何在阿里巴巴上建设公司网站网站建站开发
  • 有没有房建设计的网站重庆百度推广关键词优化
  • 怎么做刷qq业务网站自动seo优化
  • 用家用路由器ip做网站广州网站优化
  • 网站权重优化产品软文范例
  • 网站建设pdf下载全搜网
  • 什么样的网站需要备案互联网营销师培训大纲
  • 免费企业网站建设今日新闻快讯
  • 重庆专业微信网站制作如何去推广自己的产品
  • 网站开发项目验收报告百度的seo关键词优化怎么弄
  • 阿里巴巴网站图片如何做白seo整站优化服务