网站域名空间一年多少钱住宅设计网站推荐

web/2025/9/29 23:57:40/文章来源:
网站域名空间一年多少钱,住宅设计网站推荐,重庆一般做一个网站需要多少钱,html网页框架代码你好#xff0c;这里是codetrend专栏“跟着GPT学设计模式”。 引言 观察者模式#xff08;Observer Pattern#xff09;是一种行为型设计模式#xff0c;它定义了对象之间的一对多依赖关系#xff0c;使得当一个对象的状态发生改变时#xff0c;其依赖对象都能够收到通…你好这里是codetrend专栏“跟着GPT学设计模式”。 引言 观察者模式Observer Pattern是一种行为型设计模式它定义了对象之间的一对多依赖关系使得当一个对象的状态发生改变时其依赖对象都能够收到通知并自动更新。 观察者模式Observer Design Pattern也被称为发布订阅模式Publish-Subscribe Design Pattern。一般情况下被依赖的对象叫作被观察者Observable依赖的对象叫作观察者Observer。 不过在实际的项目开发中这两种对象的称呼是比较灵活的有各种不同的叫法比如Subject-Observer、Publisher-Subscriber、Producer-Consumer、EventEmitter-EventListener、Dispatcher-Listener。 在观察者模式中有两个主要角色主题Subject和观察者Observer。主题是被观察的对象它维护了一个观察者列表并提供方法用于添加、删除和通知观察者。 观察者是监听主题的对象它定义了一个更新的方法在主题状态改变时被调用。 观察者模式的一般工作流程 主题对象维护一个观察者列表并提供方法用于注册、注销和通知观察者。观察者对象实现一个更新方法用于在主题状态改变时被调用。当主题的状态发生改变时它会遍历观察者列表调用每个观察者的更新方法。观察者根据接收到的通知进行相应的操作以使自身状态与主题保持一致。 使用 Mermaid 语法类图展示观察者模式的示意图如下 #mermaid-svg-UuaJArCu1KsrtPTv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UuaJArCu1KsrtPTv .error-icon{fill:#552222;}#mermaid-svg-UuaJArCu1KsrtPTv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UuaJArCu1KsrtPTv .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-UuaJArCu1KsrtPTv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UuaJArCu1KsrtPTv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UuaJArCu1KsrtPTv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UuaJArCu1KsrtPTv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UuaJArCu1KsrtPTv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UuaJArCu1KsrtPTv .marker.cross{stroke:#333333;}#mermaid-svg-UuaJArCu1KsrtPTv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UuaJArCu1KsrtPTv g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-UuaJArCu1KsrtPTv g.classGroup text .title{font-weight:bolder;}#mermaid-svg-UuaJArCu1KsrtPTv .nodeLabel,#mermaid-svg-UuaJArCu1KsrtPTv .edgeLabel{color:#131300;}#mermaid-svg-UuaJArCu1KsrtPTv .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-UuaJArCu1KsrtPTv .label text{fill:#131300;}#mermaid-svg-UuaJArCu1KsrtPTv .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-UuaJArCu1KsrtPTv .classTitle{font-weight:bolder;}#mermaid-svg-UuaJArCu1KsrtPTv .node rect,#mermaid-svg-UuaJArCu1KsrtPTv .node circle,#mermaid-svg-UuaJArCu1KsrtPTv .node ellipse,#mermaid-svg-UuaJArCu1KsrtPTv .node polygon,#mermaid-svg-UuaJArCu1KsrtPTv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UuaJArCu1KsrtPTv .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-UuaJArCu1KsrtPTv g.clickable{cursor:pointer;}#mermaid-svg-UuaJArCu1KsrtPTv g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-UuaJArCu1KsrtPTv g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-UuaJArCu1KsrtPTv .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-UuaJArCu1KsrtPTv .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-UuaJArCu1KsrtPTv .dashed-line{stroke-dasharray:3;}#mermaid-svg-UuaJArCu1KsrtPTv #compositionStart,#mermaid-svg-UuaJArCu1KsrtPTv .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #compositionEnd,#mermaid-svg-UuaJArCu1KsrtPTv .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #dependencyStart,#mermaid-svg-UuaJArCu1KsrtPTv .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #dependencyStart,#mermaid-svg-UuaJArCu1KsrtPTv .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #extensionStart,#mermaid-svg-UuaJArCu1KsrtPTv .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #extensionEnd,#mermaid-svg-UuaJArCu1KsrtPTv .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #aggregationStart,#mermaid-svg-UuaJArCu1KsrtPTv .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv #aggregationEnd,#mermaid-svg-UuaJArCu1KsrtPTv .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UuaJArCu1KsrtPTv .edgeTerminals{font-size:11px;}#mermaid-svg-UuaJArCu1KsrtPTv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1 * Subject # observers: Observer[] attach(Observer observer) detach(Observer observer) notifyObservers() Observer update() ConcreteSubject - state getState() setState(state) ConcreteObserver update() Subject 是主题类包含了添加、删除和通知观察者的方法。observers 是一个观察者列表用于存储注册的观察者对象。Observer 是观察者类定义了一个 update() 方法用于在主题状态改变时被调用。ConcreteSubject 是具体主题类继承自 Subject它有一个额外的 state 属性表示当前状态并提供了获取和设置状态的方法。ConcreteObserver 是具体观察者类继承自 Observer实现了 update() 方法根据主题状态的改变来更新自身状态。 这个类图展示了观察者模式的关键组件及它们之间的关系。主题与观察者之间是一对多的关系主题可以有多个观察者。 当主题状态改变时它会通过通知方法 notifyObservers() 来遍历观察者列表并依次调用每个观察者的 update() 方法从而实现观察者的更新操作。 观察者模式的使用场景 观察者模式在实际应用中有很多场景以下是一些观察者模式的应用场景的举例 GUI 事件处理在图形用户界面GUI中观察者模式被广泛应用于事件处理机制。当用户执行某个操作时比如点击按钮或输入文本这些操作会触发相应的事件。事件作为主题被通知给注册的观察者观察者可以根据事件类型做出相应的响应例如更新界面、执行特定逻辑等。订阅/发布模式观察者模式也常被称为订阅/发布模式。在发布者-订阅者系统中发布者充当主题的角色订阅者则扮演观察者的角色。发布者负责发布消息订阅者订阅感兴趣的消息类型并在消息到达时执行相应的操作。这种模式广泛应用于消息队列系统、事件总线等。消息通知系统观察者模式也可以用于构建消息通知系统。例如一个新闻平台可以作为主题用户可以选择订阅感兴趣的新闻类别作为观察者。当新闻发布时平台会通知所有订阅了该类别的用户并将新闻推送给他们。游戏开发中的事件管理在游戏开发中观察者模式常被用于事件管理。例如游戏角色之间的互动和协作可以通过观察者模式实现。一个角色可以作为主题其他角色可以注册为观察者。当主题例如敌人角色发生改变时通知所有观察者例如友方角色并执行相应的行为。 实际上观察者模式非常灵活适用于很多具有发布-订阅关系的场景。它提供了一种松耦合的设计方式使得主题和观察者能够独立变化并保持一致性。 观察者模式使用注意事项 角色和职责观察者模式中包括主题Subject和观察者Observer两个核心角色。主题负责管理观察者的注册、注销以及通知操作而观察者则定义了接收更新通知并执行相应操作的方法。了解每个角色的职责和关系对于正确使用观察者模式非常重要。主题状态管理主题在观察者模式中起到承载和管理状态的作用。当主题状态发生变化时需要通知所有观察者。因此需要合理设计和管理主题的状态并及时触发通知操作。多线程安全性在多线程环境下使用观察者模式时需要考虑线程安全性。例如在主题状态变化时可能会遇到多个线程同时修改主题状态或触发通知的情况。需要采取相应的同步措施或使用线程安全的容器来确保并发访问的正确性。事件传递方式观察者模式中主题向观察者传递更新通知的方式可以是同步或异步的。在同步方式下主题在通知观察者后会等待观察者执行完相应操作才会继续执行而在异步方式下主题通知观察者后立即继续执行观察者的更新操作在后台进行。了解不同的事件传递方式对系统行为和性能的影响是重要的。 观察者模式编程示例 下面通过一段代码来说明观察者模式的实现。 import java.util.ArrayList; import java.util.List;// 主题接口 interface Subject {void attach(Observer observer);void detach(Observer observer);void notifyObservers(); }// 观察者接口 interface Observer {void update(); }// 具体主题类 class ConcreteSubject implements Subject {private ListObserver observers new ArrayList();Overridepublic void attach(Observer observer) {observers.add(observer);}Overridepublic void detach(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update();}}// 具体主题类的其他方法// ... }// 具体观察者类 class ConcreteObserver implements Observer {Overridepublic void update() {System.out.println(观察者收到更新通知执行相应操作。);} }public class ObserverPatternExample {public static void main(String[] args) {// 创建具体主题对象ConcreteSubject subject new ConcreteSubject();// 创建具体观察者对象ConcreteObserver observer1 new ConcreteObserver();ConcreteObserver observer2 new ConcreteObserver();// 注册观察者subject.attach(observer1);subject.attach(observer2);// 主题发生改变时通知观察者subject.notifyObservers();} }在上述示例中定义了一个 Subject 接口和一个 Observer 接口分别表示主题和观察者。 ConcreteSubject 是具体的主题类实现了 Subject 接口并包含了维护观察者列表、添加/删除观察者以及通知观察者的方法。 ConcreteObserver 是具体的观察者类实现了 Observer 接口并在 update() 方法中定义了观察者接收到更新通知时的操作。 在 main() 方法中创建了具体的主题对象 ConcreteSubject以及两个具体的观察者对象 observer1 和 observer2。 然后通过 attach() 方法将观察者注册到主题中然后调用 notifyObservers() 方法通知所有的观察者。当主题发生改变时所有观察者都会收到更新通知并执行相应的操作。 以上内容基于 GPT 创建和整理。 关于作者 来自一线全栈程序员nine的探索与实践持续迭代中。 欢迎关注或者点个赞~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设流程笔记网上购物哪个商城好

3、基础类型 3.1、简单变量 变量的命名 carDrip和cardRip 或boat_sport和boats_port 此外,还有有前缀的命名,使用前缀表示数据类型。常见的前缀有:str(表示字符串)、n(表示整数值)、b(表示…

IP怎么屏蔽网站域名网站建设英文术语

1. BERT模型的输出 在BERT模型中,last_hidden_state和pooler_output是两个不同的输出。 (1) last_hidden_state: last_hidden_state是指BERT模型中最后一个隐藏层的隐藏状态。它是一个三维张量,其形状为[batch_size, sequence_length, hidden_size]。其…

网站价格套餐免费注册网站平台

STL 提供了6大组件,彼此之间可以组合套用,这6大组件分别是: 容器,算法,迭代器,仿函数,适配器,空间配置器 简单介绍: 容器:各种数据结构,入vector…

免费手机网站建站平台自建网站

进程与线程 进程:直观的说就是任务管理器中各种正在运行的程序。对于操作系统来说,进程仅仅是一个数据结构,并不会真实的执行代码 线程:通常被称作但并不真的是轻量级进程或实际工作中的进程,它会真实的执行代码。每…

上海快速建站平台wordpress 登录后页面空白页

说道vue组件库,目前主流的基本就是iview和element。今天又发现一个很不错的。HeyUI。组件也很丰富,入门比较简单。反正开源框架我们有不嫌多,多多益善啊。感兴趣的可以看看。关于HeyUIHeyUI 是一套基于 Vue2.0 的开源 UI 组件库,主…

企业如何建设网站呢网站建设的组织机构

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 用法: 从配置properties文件中读取init.password 的值。 Value("${init.password}")private String initPwd…

asp网站源码说明qq推广群号码大全

研究背景 复杂城市地形下无人机避障三维航迹规划是无人机技术领域的一个重要研究方向。无人机在城市环境中的广泛应用,如快递配送、城市监测和搜救等任务,对其航迹规划和避障能力提出了挑战。 研究背景包括以下方面: 无人机的快速发展:无人机技术在近年来得到了迅猛发展…

宝塔 wordpress ssl青岛网站的优化

指针和数组 1. 指针的算术运算1.1 指针加上整数1.2 指针减去整数1.3 两个指针相减1.4 指针比较1.5 指向复合常量的指针 2. 指针用于数组处理3. 用数组名作为指针3.1 数组型实际参数(改进版)3.2 用指针作为数组名 4. 指针和多维数组4.1 处理多维数组的元素…

互助平台网站建设招商网站设计

目录 1. RabbitMQ2. Kafka3. ActiveMQ4. Redis5. ZeroMQ6. Apache Pulsar 消息队列(Message Queue)是一种异步通信机制,它将消息发送者和接收者解耦,从而提高了应用程序的性能、可扩展性和可靠性。在分布式系统中,消息…

沈阳哪家公司做网站好有没有做.net面试题的网站

1 背景 在上篇博客《自动驾驶---Motion Planning之Path Boundary》中,笔者主要介绍了path boundary的一些内容,通过将道路中感兴趣区域的动静态障碍物投影到车道坐标系中,用于确定L或者S的边界,并利用道路信息再确定Speed的边界,最后结合粗糙的速度曲线和路径曲线,即可使…

物流网站 源码电商网站的数据库设计

美国股市和债市近期遭遇了罕见的双重打击,道指连续六个交易日下跌,引发市场广泛关注。这一现象背后,是否又上演了某一“魔咒”?本文将从多个角度对此进行深入分析。 道指罕见创下六连阴、标普500指数迎来硅谷银行危机以来最大两日…

新公司怎样做网站在四川眉山软件开发背景介绍

硬盘空间是大家最头痛的一个问题,大家在硬盘空间变小的时候怎么腾空间的呢?下面为大家分享7个mac系统释放空间的高级方法,大家赶紧来收了! mac系统释放硬盘空间方法: 方法一:删除Emacs——可以节省出60MB的…

专业的网站制作设计永康新站优化

在HotSpot虚拟机中,一个空的Object对象在64位的环境下通常占用约 16 字节的对象头。 这个对象头包括: 标记字(Mark Word): 8 字节,用于存储对象的状态信息、锁信息等。类型指针(Class Pointer&…

湖北省建设厅造价官方网站废旧网站哪个做的最好

集中制冷用空调系统中,单台冷却塔的冷却水量基本上都小于1,000m/h,且装有淋水填料的横流机械通风开式居多。本文将已横流开式冷却塔为对象,探讨影响其效率的几个因素。横流开式冷却塔示意图如下所示:横流开式冷却塔示意图 Fig 01说…

电子商务网站建设方wordpress 加速乐

中国作家网消息:5月22日,文化艺术出版社召开旅法青年女作家林风竹“诗画小说”《世界上最幸福的人》作品研讨会。在京的文学评论家、艺术家和编辑家胡平、孟繁华、陈晓明、白烨、施占军、兴安等就林风竹的小说进行了深入的分析和热烈讨论。专家们认为&am…

免费建设门户网站wordpress信息搜集

SQL语句 结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。 分类 DDL 数据定义语言(Data Definition Language),定义对数据库对象(库、表、列、索引)的操作。 DML 数据操作语言(Data Manip…

电子商务网站建设策划书例子网站服务器和ftp空间

东方财富证券:东方财富网(深创:300059)旗牌照齐全证券公司,极具互联网基因的券商。.Net服务端开发工程师/.Net前端开发工程师[职位介绍]服务端:开户、交易及资讯系统的后端接口服务(Asp.Net WebApi)开发;服务端&#x…

discuz蓝色城市门户论坛网站模板wordpress回复框无法加载

本篇博客只提供安装包 安装与卸载难度较低,不做赘述 并不是说一定要卸载才能安装,灵活掌握,如果实际场景需要清理老版本sqlserver那么选择卸载 一、下载 下载地址 sqlserver2014官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 二、卸载…

自己的网站打不开了路由器统一登录网站

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 问大家一个问题:你是否想过在自己的电脑上部署一套大模型?并用自己的知识库训练他? 阿里通义千问今天发布了最新的开源大模型系…

网站的建设初步定位富锦网站制作

本文主要介绍基于51单片机的流水灯仿真(完整仿真源文件及代码见文末链接) 仿真运行视频 Proteus仿真--基于51单片机的流水灯仿真(从左往右) 附完整Proteus仿真资料代码资料 百度网盘链接: https://pan.baidu.com/s/1aZH13zwQkNB7…