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

银行网站维护是做哪些巴中城乡建设官方网站

银行网站维护是做哪些,巴中城乡建设官方网站,互联网开发是做什么的,教育机构如何引流与推广循以下设计原则: 单一职责原则:将对象间的交互集中到中介者中 迪米特法则:减少对象间的直接通信 开闭原则:可以新增中介者而不修改现有组件 主要优点 降低耦合:减少对象间的直接依赖 集中控制:将交互逻…

循以下设计原则:

  1. 单一职责原则:将对象间的交互集中到中介者中

  2. 迪米特法则:减少对象间的直接通信

  3. 开闭原则:可以新增中介者而不修改现有组件

主要优点

  1. 降低耦合:减少对象间的直接依赖

  2. 集中控制:将交互逻辑集中到中介者

  3. 简化维护:交互关系更容易理解和修改

  4. 复用性:组件可以更容易地被复用

模式结构

主要组件

  1. Mediator(中介者接口)

    • 定义与各组件通信的接口

  2. ConcreteMediator(具体中介者)

    • 实现中介者接口

    • 协调各组件之间的交互

    • 知道所有组件及其用途

  3. Component(组件)

    • 每个组件都知道其中介者对象

    • 组件间不直接通信,而是通过中介者

完整代码示例

#include <iostream>
#include <string>
#include <memory>
#include <vector>
#include <algorithm>// 前置声明
class Component;// ==================== 中介者接口 ====================
class Mediator {
public:virtual void notify(Component* sender, const std::string& event) const = 0;virtual ~Mediator() = default;
};// ==================== 组件基类 ====================
class Component {
protected:Mediator* mediator_;public:explicit Component(Mediator* mediator = nullptr) : mediator_(mediator) {}void setMediator(Mediator* mediator) {mediator_ = mediator;}virtual ~Component() = default;
};// ==================== 具体组件 ====================
class Button : public Component {std::string name_;public:explicit Button(const std::string& name, Mediator* mediator = nullptr): Component(mediator), name_(name) {}void click() {std::cout << name_ << " 被点击" << std::endl;if (mediator_) {mediator_->notify(this, "click");}}
};class TextBox : public Component {std::string text_;public:explicit TextBox(Mediator* mediator = nullptr) : Component(mediator) {}void setText(const std::string& text) {text_ = text;std::cout << "文本框内容设置为: " << text << std::endl;if (mediator_) {mediator_->notify(this, "text_changed");}}std::string getText() const { return text_; }
};class CheckBox : public Component {bool checked_ = false;public:explicit CheckBox(Mediator* mediator = nullptr) : Component(mediator) {}void check() {checked_ = !checked_;std::cout << "复选框状态: " << (checked_ ? "选中" : "未选中") << std::endl;if (mediator_) {mediator_->notify(this, checked_ ? "checked" : "unchecked");}}bool isChecked() const { return checked_; }
};// ==================== 具体中介者 ====================
class AuthenticationDialog : public Mediator {Button* loginButton_;Button* cancelButton_;TextBox* usernameTextBox_;TextBox* passwordTextBox_;CheckBox* rememberMeCheckBox_;public:AuthenticationDialog(Button* loginButton,Button* cancelButton,TextBox* usernameTextBox,TextBox* passwordTextBox,CheckBox* rememberMeCheckBox): loginButton_(loginButton),cancelButton_(cancelButton),usernameTextBox_(usernameTextBox),passwordTextBox_(passwordTextBox),rememberMeCheckBox_(rememberMeCheckBox) {loginButton_->setMediator(this);cancelButton_->setMediator(this);usernameTextBox_->setMediator(this);passwordTextBox_->setMediator(this);rememberMeCheckBox_->setMediator(this);}void notify(Component* sender, const std::string& event) const override {if (sender == loginButton_ && event == "click") {std::cout << "登录按钮点击 - 尝试登录..." << std::endl;if (usernameTextBox_->getText().empty() || passwordTextBox_->getText().empty()) {std::cout << "错误: 用户名和密码不能为空" << std::endl;} else {std::cout << "使用用户名 '" << usernameTextBox_->getText() << "' 和密码 '" << passwordTextBox_->getText() << "' 登录" << std::endl;if (rememberMeCheckBox_->isChecked()) {std::cout << "记住登录状态" << std::endl;}}} else if (sender == cancelButton_ && event == "click") {std::cout << "取消按钮点击 - 重置表单" << std::endl;usernameTextBox_->setText("");passwordTextBox_->setText("");rememberMeCheckBox_->check();} else if (sender == rememberMeCheckBox_ && (event == "checked" || event == "unchecked")) {std::cout << "记住我选项改变: " << event << std::endl;} else if ((sender == usernameTextBox_ || sender == passwordTextBox_) && event == "text_changed") {std::cout << "文本改变 - 验证输入..." << std::endl;}}
};// ==================== 客户端代码 ====================
int main() {std::cout << "=== 中介者模式演示: 登录对话框 ===" << std::endl;// 创建组件Button loginButton("登录");Button cancelButton("取消");TextBox usernameTextBox;TextBox passwordTextBox;CheckBox rememberMeCheckBox;// 创建中介者并关联组件AuthenticationDialog dialog(&loginButton, &cancelButton, &usernameTextBox, &passwordTextBox, &rememberMeCheckBox);// 模拟用户交互std::cout << "\n用户输入用户名和密码..." << std::endl;usernameTextBox.setText("user123");passwordTextBox.setText("password");std::cout << "\n用户点击记住我..." << std::endl;rememberMeCheckBox.check();std::cout << "\n用户点击登录按钮..." << std::endl;loginButton.click();std::cout << "\n用户点击取消按钮..." << std::endl;cancelButton.click();return 0;
}

模式变体

1. 观察者中介者

class ObserverMediator : public Mediator {std::vector<Component*> components_;public:void addComponent(Component* component) {components_.push_back(component);component->setMediator(this);}void notify(Component* sender, const std::string& event) override {for (auto component : components_) {if (component != sender) {// 通知其他组件}}}
};

2. 单例中介者

class SingletonMediator : public Mediator {static SingletonMediator* instance_;SingletonMediator() = default;public:static SingletonMediator* getInstance() {if (!instance_) {instance_ = new SingletonMediator();}return instance_;}void notify(Component* sender, const std::string& event) override {// 实现通知逻辑}
};

实际应用场景

  1. GUI开发:如示例中的对话框组件交互

  2. 聊天系统:聊天室作为用户间通信的中介

  3. 航空管制:塔台协调飞机间的通信

  4. 工作流系统:协调多个处理步骤

  5. 游戏开发:游戏对象间的交互协调

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

相关文章:

  • 花都网站推广wordpress菜单登录
  • 中企动力网站建设合同seo排名诊断
  • 做众筹网站怎么赚钱吗网站建设的网站
  • 如何百度收录自己的网站怎么创建网站链接
  • 一键免费搭建手机网站威海教育行业网站建设
  • 个体户能做网站备案吗邳州市建设局官方网站
  • 做啥英文网站赚钱单页网站上传教程视频
  • 如何跟帖做网站百度搜索推广创意方案
  • 网站建设关键要做好哪些工作服装设计参考网站
  • 哪个网站有免费lamp wordpress 404
  • 如何把动态图发网站做头像邯郸h5开发
  • 网站源码爬取工具淘宝做首页热点的什么网站
  • 进一步推进网站集约化建设北京官网seo收费
  • 有色建设网站江都建设局网站
  • 一个网站如何工作流程深圳自助建站网站
  • wordpress 网站域名免费外贸电商平台
  • 佛山网站建设服务器wordpress自定义链接不能用
  • 购物网站建设容易出现的问题建设网站需要申请
  • 提供龙岗网站建设免费建筑设计软件
  • 哪个网站有淘宝做图的素材贵州百度推广优化报告
  • 百度推广关键词价格查询网络seo招聘
  • 取名网站开发wordpress 积分系统
  • 网站营销单页怎么做吉安建设网站
  • 企业网站建设费用摊销中国交通建设集团
  • 电商网站 技术自助建站网站建设设计公司
  • 金属材料网站建设网页预览手机网站效果
  • 石景山网站建设公司排行建设 云服务器 网站
  • 酒店设计的网站建设wordpress 小工具 修改
  • 蛋糕网站建设淘宝上网站建设是什么
  • 优惠券网站要怎么做推广网页版梦幻西游是网易的吗