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

wordpress 复杂表单惠州短视频seo

wordpress 复杂表单,惠州短视频seo,开发公司开发流程,网站建设中的推广工作目录 1、观察者模式(Observer Pattern)含义 2、观察者模式的UML图学习 3、观察者模式的应用场景 4、观察者模式的优缺点 (1)优点: (2)缺点 5、C实现观察者模式的实例 1、观察者模式&…

目录

1、观察者模式(Observer Pattern)含义

2、观察者模式的UML图学习

3、观察者模式的应用场景

4、观察者模式的优缺点

(1)优点:

(2)缺点

5、C++实现观察者模式的实例


1、观察者模式(Observer Pattern)含义

观察者模式(Observer)定义了一种一对多的依赖关系,让多个观察者对象同事监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。【DP】

观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象状态发生改变时,所有依赖它的对象都会自动收到通知并更新。

2、观察者模式的UML图学习

观察者模式的主要角色包括:

(1)Subject(目标):被观察的对象,它维护了一个观察者列表,并提供了添加、删除和通知观察者的方法。

(2)Observer(观察者):观察目标的对象,它定义了接收通知并进行相应操作的方法。

(3)ConcreteSubject(具体目标):具体的被观察对象,继承或实现了Subject接口,可以有多个不同的具体目标。

(4)ConcreteObserver(具体观察者):具体的观察者对象,继承或实现了Observer接口,可以有多个不同的具体观察者。

3、观察者模式的应用场景

(1)当一个对象的改变需要同时通知其他对象,并且不知道具体有多少个对象需要通知时。

(2)当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两个方面封装在独立的对象中,使它们可以独立地改变和复用时。

4、观察者模式的优缺点

(1)优点:

        1)解耦性:观察者模式将目标和观察者解耦,使得它们可以独立地变化。

        2)扩展性:可以很方便地增加新的观察者和目标,符合开闭原则。

        3)可以实现一对多的依赖关系,一个目标可以有多个观察者。

(2)缺点

      1)观察者过多时,会导致通知时间增加,影响性能。

        2)观察者和目标之间有循环依赖时,可能会导致循环调用,需要注意避免。

5、C++实现观察者模式的实例


#include <iostream>
#include <vector>// 观察者接口
class Observer 
{
public:virtual void update(int data) = 0;
};// 具体观察者A
class ConcreteObserverA : public Observer 
{
public:void update(int data) override {std::cout << "ConcreteObserverA received update: " << data << std::endl;}
};// 具体观察者B
class ConcreteObserverB : public Observer 
{
public:void update(int data) override {std::cout << "ConcreteObserverB received update: " << data << std::endl;}
};// 目标类
class Subject 
{
private:int data;std::vector<Observer*> observers;public:void attach(Observer* observer) {observers.push_back(observer);}void detach(Observer* observer) {for (auto it = observers.begin(); it != observers.end(); ++it) {if (*it == observer) {observers.erase(it);break;}}}void notify() {for (auto observer : observers) {observer->update(data);}}void setData(int newData) {data = newData;notify();}
};int main() 
{Subject subject;ConcreteObserverA observerA;ConcreteObserverB observerB;subject.attach(&observerA);subject.attach(&observerB);subject.setData(10);subject.detach(&observerA);subject.setData(20);return 0;
}

在上述示例中,我们定义了Observer接口和两个具体观察者类ConcreteObserverA和ConcreteObserverB。Subject类作为目标类,维护了一个观察者列表,并提供了attach、detach和notify等方法。在主函数中,我们创建了一个Subject对象和两个具体观察者对象,并通过attach方法将它们注册到Subject中。然后,通过setData方法改变Subject的数据,从而触发通知并更新观察者。

http://www.yayakq.cn/news/910772/

相关文章:

  • 自己电脑做网站服务器违法吗网站建设需要哪些工具与知识
  • fwa 网站 欣赏用手机开发app的软件
  • 绍兴网站建设制作自己的网站服务器
  • 厦门网站营销网站建设小说毕业设计
  • 江西南昌网站建设哪家好知名网站排名
  • 做网站时数据库要创建几个表怎么做 代刷网站
  • 怎么把自己的网站上传到百度wordpress4.9.6中文
  • 网站建设技术代码长沙企业网站建设公
  • 自己做个网站教程文学网站模板
  • 网站首页设计制作费用伪静态网站网站 目录写入权限
  • 郑州网站建设快速排名熊掌青岛三吉互联网站建设公司
  • 张掖市作风建设年活动网站wordpress 调用文章标签
  • 做网站和做系统有什么不同一般网站后台地址
  • 山西住房与城乡建设厅定额网站网页设计与网站开发基础教程
  • 响应式网站开发流行吗网站建设续费合同
  • 门户网站模板之家网站运营心得
  • 福州自适应网站建设做网站要做哪些
  • 玉环哪里有做网站手机免费创建网站的软件
  • 设计需要看的网站有哪些河南网站优化建设
  • 网站登录界面源码手机移动端网站建设
  • 网站不被收录的原因安徽元鼎建设工程网站
  • 大连哪个公司做网站好移动网站制作
  • 网站工作状态建设卫生间做防水网站
  • 网站开发太简单了框架网站服务器购买价格
  • 网站备案要360免费建站教程
  • 用python做网站的多吗建筑工程造价网
  • 网站鼠标代码企业网站 留言板
  • 中国建设银行的网站用户名是什么美食网页
  • 品牌企业建站网站开发英文
  • 中国互联网站建设中心建站asp.net网站开发 vs2017