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

贵州省建设监理协会官方网站什么样的人适合做策划

贵州省建设监理协会官方网站,什么样的人适合做策划,阿里云做网站开发吗,2017我们一起做网站中介者模式 1.1 分类 (对象)行为型 1.2 提出问题 实现一个机场的起飞管理系统,如果由驾驶员们讨论谁先飞,后果可能是灾难性的。 1.3 解决方案 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用&a…

中介者模式

1.1 分类

(对象)行为型

1.2 提出问题

实现一个机场的起飞管理系统,如果由驾驶员们讨论谁先飞,后果可能是灾难性的。

1.3 解决方案

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使得其耦合松散。

1.4 实现类图

在这里插入图片描述

  1. 组件(Component)是各种包含业务逻辑的类。每个组件都有一个指向中介者的引用,可通过将其连接到不同的中介者以使其能在其他程序中复用。
  2. 中介者(Mediator)接口声明了与组件交流的方法,但通常仅包括一个通知方法。
  3. 具体中介者(Concrete Mediator)封装了多种组件间的关系。 具体中介者通常会保存所有组件的引用并对其进行管理。
  4. 组件并不知道其他组件的情况。如果组件内发生了重要事件, 它只能通知中介者。中介者收到通知后能轻易地确定发送者。

1.5 示例代码

#include <iostream>
#include <string>class Staff;
//Mediator Interface
class ControlTower {
public:virtual void notify(Staff* sender, std::string event) const = 0;
};class Staff {
protected:std::string m_name;ControlTower* m_controlTower;
public:Staff(std::string name, ControlTower* controlTower = nullptr) :m_name(name), m_controlTower(controlTower) {}std::string name() { return m_name; }void setMediator(ControlTower* controlTower) {m_controlTower = controlTower;}
};
class Pilot : public Staff {
public:Pilot(std::string name):Staff(name){}void takeOff() {std::cout << name() + ":请求起飞。\n";m_controlTower->notify(this, "起飞请求");}void copy() {std::cout << name() + ":收到。\n";//m_controlTower->notify(this, "收到");}
};class GroundGrew : public Staff {
public:GroundGrew(std::string name) :Staff(name) {}void maintainance() {std::cout << name() + ":请求维护。\n";m_controlTower->notify(this, "请求维护");}void copy() {std::cout << name() + ":收到。\n";//m_controlTower->notify(this, "收到");}
};
class ConcreteControlTower : public ControlTower {
private:Pilot* m_pilot1;Pilot* m_pilot2;Pilot* m_pilot3;GroundGrew* m_ground1;
public:ConcreteControlTower(Pilot* p1, Pilot* p2, Pilot* p3, GroundGrew* g1):m_pilot1(p1), m_pilot2(p2), m_pilot3(p3),m_ground1(g1) {m_pilot1->setMediator(this);m_pilot2->setMediator(this);m_pilot3->setMediator(this);m_ground1->setMediator(this);}void notify(Staff* sender, std::string event) const override {std::cout << "控制塔:收到" + sender->name() + event + "。\n";if (event == "起飞请求") {m_ground1->copy();if(sender!= m_pilot1)m_pilot1->copy();if (sender != m_pilot2)m_pilot2->copy();if (sender != m_pilot3)m_pilot3->copy();}if (event == "请求维护") {m_pilot1->copy();m_pilot2->copy();m_pilot3->copy();}}
};
int main()
{Pilot* p1 = new Pilot("空军1号");Pilot* p2 = new Pilot("空军2号");Pilot* p3 = new Pilot("空军3号");GroundGrew* g1 = new GroundGrew("地勤1");ConcreteControlTower* controlTower = new ConcreteControlTower(p1, p2, p3, g1);p1->takeOff();g1->maintainance();delete p1;delete p2;delete p3;delete g1;
}

1.6 举个栗子

中介者模式可帮助你减少各种 UI 类(按钮、复选框和文本标签)之间的相互依赖关系。
在这里插入图片描述

1.7 总结

1.7.1 优点

  1. 无需修改实际组件就能增加新的中介者。
  2. 可以减轻应用中多个组件间的耦合情况。
  3. 可以更方便地复用各个组件。

1.7.2 缺点

一段时间后,中介者可能会演化成为上帝对象。

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

相关文章:

  • 中文企业网站模板html域名地址查询
  • 广告设计适合什么人学杭州seo搜索引擎优化公司
  • ppt在线浏览网站源码2023年7月疫情爆发
  • 怎么给网站上传附件搜索推广竞价托管哪家好
  • 响应式网站设计教程上海网站优化
  • 网站升级建设费用厦门人才网招聘官网
  • 公司做网站的目的免费网站自助建站系统
  • 山东宏远建设有限公司网站国内军事新闻最新消息
  • 深圳华强北做网站营销手段有哪些方式
  • 国家税务总局网站官网福建税务局百度搜索竞价排名
  • 沈阳软件公司 网站制作广东今天新闻最新消息
  • 越众做的绿色建筑的网站品牌推广计划书怎么写
  • 东莞建站如何自制网站
  • 门店装修设计公司优化大师免费版下载
  • 做食品检测的网站360投放广告怎么收费
  • 高端炫酷h5怎么制作seo基础知识考试
  • 免费网站建站方法网站推广和优化的原因
  • asp.net网站开发菜鸟无代码建站
  • 用模版做网站的好处和坏处谷歌广告代理公司
  • wordpress 开启debugseo的优点
  • 网站初期做几个比较好好的在线crm系统
  • 用wordpress开发网站模板如何做网络宣传推广
  • 网站建设评价标准国内快速建站
  • 上海高登联合建设网站深圳最新新闻事件今天
  • 织梦的官方网站seo关键词优化推广报价表
  • 自己做的网站字体变成方框中国新闻
  • 网站必须做电子认证吗百度账号登录入口官网
  • 抖音做我女朋友网站图片外链上传网站
  • 鞍山网站设计seo整站优化一年价格多少
  • 天津网站建设技术托管软文推广新闻发布