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

手机客户端网站怎么做宁夏网站建设公司

手机客户端网站怎么做,宁夏网站建设公司,前端网页设计师,昆明官网seo技术🔄 回顾 Day 16:责任链模式小结 在 Day 16 中,我们学习了责任链模式(Chain of Responsibility Pattern): 将请求沿链传递,节点可选择处理或传递下一节点。实现了请求发送者与多个处理者的解耦…

🔄 回顾 Day 16:责任链模式小结

在 Day 16 中,我们学习了责任链模式(Chain of Responsibility Pattern):

  • 将请求沿链传递,节点可选择处理或传递下一节点。
  • 实现了请求发送者与多个处理者的解耦,灵活构建处理流。

而今天的主题——中介者模式(Mediator Pattern),是进一步减少对象间直接依赖、简化系统复杂度的重要模式。

中介者模式:通过引入中介者对象,集中控制对象之间的交互,降低对象之间的耦合度。


一、中介者模式属于哪一类设计模式?

中介者模式属于行为型设计模式(Behavioral Pattern)!

为什么?

  • 行为型模式主要关注对象之间的通信与职责分配
  • 中介者模式的本质是:组织、协调多个对象之间的行为交互
  • 它不负责创建对象(不是创建型),也不改变对象结构(不是结构型),而是优化对象如何交互

对比总结:

分类主要目的中介者模式归属理由
创建型模式负责对象创建与实例化(如工厂、单例)❌ 中介者不负责创建对象
结构型模式负责对象组合与组织(如适配器、桥接)❌ 中介者不改变对象静态结构
行为型模式负责对象间通信与职责协作✅ 中介者专注协调对象之间的交互关系

✅ 初学者记忆口诀:

“中介调行为,不管造结构。”


二、中介者模式的核心动机

在复杂系统中,对象与对象之间如果直接通信,会导致:

  • 关系网越来越复杂(网状耦合)
  • 难以维护与扩展(新增对象时需要修改大量类)

✅ 应用动机:

  • GUI 窗口控件之间的联动
  • 聊天室中多用户消息传递
  • 航空交通管制系统中的飞机调度

引入中介者后:

  • 对象不再直接通信,而是统一通过中介者转发、协调
  • 系统结构变得清晰,交互逻辑集中管理

三、结构图(UML)

+----------------+
| Mediator       |
+----------------+
| +notify(sender, event) |
+----------------+/\/  \
+----------------+    +----------------+
| ConcreteMediator |    |  Component    |
+----------------+    +----------------+/\/  \+----------------+ +----------------+| Button          | | Textbox        |+----------------+ +----------------+

在这里插入图片描述

四、角色说明

角色职责描述
Mediator中介者接口,统一协调对象交互
ConcreteMediator具体中介者,管理并协调各对象
Component具体同事对象,持有中介者引用,通过中介通信

五、C++ 实现:窗口控件协作系统

✅ 中介者接口

class Mediator {
public:virtual void notify(const std::string& sender, const std::string& event) = 0;virtual ~Mediator() = default;
};

✅ 具体同事类(Button & Textbox)

class Component {
protected:Mediator* mediator_;
public:void setMediator(Mediator* mediator) { mediator_ = mediator; }virtual ~Component() = default;
};class Button : public Component {
public:void click() {std::cout << "按钮被点击\n";mediator_->notify("Button", "click");}
};class Textbox : public Component {
public:void clear() {std::cout << "文本框被清空\n";}
};

✅ 具体中介者

class DialogMediator : public Mediator {Button* button_;Textbox* textbox_;public:DialogMediator(Button* btn, Textbox* tb) : button_(btn), textbox_(tb) {button_->setMediator(this);textbox_->setMediator(this);}void notify(const std::string& sender, const std::string& event) override {if (sender == "Button" && event == "click") {textbox_->clear();}}
};

✅ 使用示例

int main() {Button button;Textbox textbox;DialogMediator mediator(&button, &textbox);button.click();return 0;
}

输出:

按钮被点击
文本框被清空

六、中介者常见应用场景总结

场景中介者作用说明
GUI 控件交互统一管理按钮、文本框、下拉框的协作逻辑
聊天室系统聊天服务器作为中介,转发各用户消息
航空交通管制系统塔台协调各飞机起降调度
游戏多人房间管理房主服务器协调玩家进入、退出、广播消息
消息总线系统各模块通过事件总线解耦直接通信

七、优点与缺点总结

✅ 优点:

  • 降低对象间耦合,每个对象只与中介者通信
  • 集中管理交互逻辑,系统结构更清晰
  • 便于扩展和维护(新增组件只需修改中介者)

❗ 缺点:

  • 中介者自身可能变得非常复杂(上帝对象)
  • 所有交互集中,压力较大,需要合理设计拆分

八、中介者与观察者/责任链的对比

模式意图特点
中介者 Mediator集中管理对象交互主动协调,多对多交互集中处理
观察者 Observer订阅发布消息通知事件驱动,广播式通知
责任链 Chain传递请求链式处理责任转移,单线处理

九、面试回答模板

“我们在聊天系统中使用中介者模式,服务器作为中心节点协调所有客户端消息,不让客户端之间直接通信。这样新增客户端、扩展功能都无需修改已有客户端逻辑,只需修改服务器中介者逻辑,显著降低系统耦合。”

✅ 建议强调:集中管理、降低耦合、支持扩展。


十、口诀记忆

“通信中有桥,独立少烦恼;集中掌控流,系统易扩展。”


十一、明日预告:Day 18

备忘录模式(Memento Pattern):保存对象内部状态,实现撤销与恢复功能,保护封装性。



文章转载自:

http://4XhfrEXr.rnmyw.cn
http://Mrj3NbM8.rnmyw.cn
http://4KU87qFY.rnmyw.cn
http://hEHlwtTc.rnmyw.cn
http://ZJtg0yFg.rnmyw.cn
http://IuPUp5pK.rnmyw.cn
http://VLnLH4Xs.rnmyw.cn
http://51AVV8md.rnmyw.cn
http://2INyhcwN.rnmyw.cn
http://YwdE66tX.rnmyw.cn
http://AVtXhped.rnmyw.cn
http://4jkPMfr5.rnmyw.cn
http://0ADkTQjt.rnmyw.cn
http://mQnoybHf.rnmyw.cn
http://wA8me6Ho.rnmyw.cn
http://FOufkUJY.rnmyw.cn
http://SIY76Hgp.rnmyw.cn
http://1dmKWMQb.rnmyw.cn
http://gw2WJ8h7.rnmyw.cn
http://i1nyPJyF.rnmyw.cn
http://ngbsEm62.rnmyw.cn
http://pwXH8g2X.rnmyw.cn
http://Xz7JtL26.rnmyw.cn
http://LarmMjiG.rnmyw.cn
http://FS3Arm6d.rnmyw.cn
http://gRBbc76y.rnmyw.cn
http://vIgYnOfi.rnmyw.cn
http://YUv1siSI.rnmyw.cn
http://nCbfuRwR.rnmyw.cn
http://XHRGz6bM.rnmyw.cn
http://www.dtcms.com/wzjs/728174.html

相关文章:

  • 只做app不做网站可以吗网站规划 评价
  • 做期货看资讯什么网站好商丘猎狐网络
  • 网站建设的基本步骤是哪些小城镇建设网站参考文献
  • 怎么用阿里云建网站用flash做游戏下载网站
  • 租车网站模板下载手机传奇网站模板下载
  • 建一个wordpress网站成本dedeai网站最新
  • 建筑工程招标网苏州网站关键词优化推广
  • 坪地网站建设市场wordpress博客备案
  • 台州网站排名外包营销网站建站开发
  • 青岛网站制作哪里有weixinqqcom微信官网
  • 做网站是否用数据库在阿里云做网站教程
  • 河南营销型网站建设网站怎么做分享链接地址
  • 武威网站seo建设考试网站
  • 做彩票网站模板视频直播网站架构
  • 做网站找人seo教程论坛
  • 做推广的的网站模板网站建设公司用5g
  • 做网站挣钱快又多天津大型网站设计公司
  • 如何建立免费微网站网站被泛解析
  • 山东省建设人才网站深圳网站建设多少钱
  • 网站建设比选文件不正规网站制作
  • 网上做兼职网站有哪些域名是什么样式的
  • 怎么向网站添加型号查询功能网站建设招标办法
  • 神华两学一做网站医药包装设计公司
  • 临沂建设网站制作公司百度扫一扫入口
  • 淮北网站建设推广怎么做好网站搜索引擎优化
  • 如何在网站上添加备案号接单干活的平台
  • 富锦网站制作做服装最好的网站建设
  • 免费行情网站软件泰安seo
  • 拼客多网站多少钱可以做动画片制作教程
  • 网站制作的页面比例关于做膳食的一些网站