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

上海闵行建设局官方网站王烨鬼小说

上海闵行建设局官方网站,王烨鬼小说,汕头市住建局,网站设计报告模板及范文模式定义 访问者模式(Visitor Pattern)是一种行为型设计模式,其核心是将作用于对象结构的操作与对象本身解耦,允许在不修改现有类的前提下定义新操作。该模式适用于需要为复杂对象结构(如数控系统的组件)添…

模式定义

访问者模式(Visitor Pattern)是一种行为型设计模式,其核心是将作用于对象结构的操作与对象本身解耦,允许在不修改现有类的前提下定义新操作。该模式适用于需要为复杂对象结构(如数控系统的组件)添加多种独立功能的场景。


模式结构

抽象访问者(Visitor)

  • 定义访问具体元素的接口(如 visitAxisvisitTool),每个方法对应一种具体元素类型。
    具体访问者(ConcreteVisitor)
  • 实现抽象访问者的接口,定义对元素的具体操作(如诊断、维护)。
    抽象元素(Element)
  • 声明 accept 方法,接受访问者对象作为参数。
    具体元素(ConcreteElement)
  • 实现 accept 方法,调用访问者的对应方法(如 visitor.visitAxis(this))。
    对象结构(ObjectStructure)
  • 管理元素的集合(如机床的轴、刀具),提供遍历访问的方法。

适用场景

数控系统诊断:为机床的轴、刀具等组件添加状态检查、维护操作。
多类型数据处理:如生成加工报告、统计运行参数。
动态扩展功能:无需修改现有代码即可支持新操作(如新增安全检测)。


C++示例(数控系统场景)

场景说明:
数控机床包含多个组件(轴、刀具、冷却系统),维护工程师需要定期检查各部件状态。通过访问者模式,可以灵活添加诊断操作。

#include 
#include // 前向声明
class Axis;
class Tool;
class CoolingSystem;// 抽象访问者:维护工程师
class MaintenanceVisitor {
public:virtual ~MaintenanceVisitor() = default;virtual void visitAxis(Axis* axis) = 0;virtual void visitTool(Tool* tool) = 0;virtual void visitCoolingSystem(CoolingSystem* cs) = 0;
};// 具体访问者:诊断工程师
class DiagnosticVisitor : public MaintenanceVisitor {
public:void visitAxis(Axis* axis) override {std::cout << "检查轴:校准位置,检测磨损..." << std::endl;}void visitTool(Tool* tool) override {std::cout << "检查刀具:检查锋利度,清理碎屑..." << std::endl;}void visitCoolingSystem(CoolingSystem* cs) override {std::cout << "检查冷却系统:检测液位,清理管道..." << std::endl;}
};// 抽象元素:机床组件
class MachineComponent {
public:virtual ~MachineComponent() = default;virtual void accept(MaintenanceVisitor& visitor) = 0;
};// 具体元素:轴
class Axis : public MachineComponent {
public:void accept(MaintenanceVisitor& visitor) override {visitor.visitAxis(this);}
};// 具体元素:刀具
class Tool : public MachineComponent {
public:void accept(MaintenanceVisitor& visitor) override {visitor.visitTool(this);}
};// 具体元素:冷却系统
class CoolingSystem : public MachineComponent {
public:void accept(MaintenanceVisitor& visitor) override {visitor.visitCoolingSystem(this);}
};// 对象结构:机床组件集合
class CNCSystem {
private:std::vector components;
public:void addComponent(MachineComponent* comp) {components.push_back(comp);}void performMaintenance(MaintenanceVisitor& visitor) {for (auto comp : components) {comp->accept(visitor);}}
};int main() {CNCSystem system;system.addComponent(new Axis());system.addComponent(new Tool());system.addComponent(new CoolingSystem());DiagnosticVisitor diagEngineer;system.performMaintenance(diagEngineer);return 0;
}

代码解释
抽象访问者 MaintenanceVisitor 定义了对轴、刀具、冷却系统的访问接口[3][4][6]。
具体访问者 DiagnosticVisitor 实现了具体的诊断逻辑[3][4][6]。
具体元素(如 Axis)通过 accept 方法将自身传递给访问者[3][4][6]。
对象结构 CNCSystem 管理所有组件,并触发批量访问操作[3][4][6]。

输出结果:

检查轴:校准位置,检测磨损...
检查刀具:检查锋利度,清理碎屑...
检查冷却系统:检测液位,清理管道...

模式优势

扩展性强:新增操作只需添加访问者类,无需修改元素类。
职责分离:将操作逻辑从组件中解耦,符合单一职责原则。


文章转载自:

http://q0zvnUdf.nLgmr.cn
http://Os81ibyN.nLgmr.cn
http://lAZ7Rm96.nLgmr.cn
http://Nt4PqqTO.nLgmr.cn
http://gP1Bwslm.nLgmr.cn
http://9dqGPDe4.nLgmr.cn
http://GJk12BZf.nLgmr.cn
http://fHlL3inc.nLgmr.cn
http://t2rOHOj7.nLgmr.cn
http://UjK4xHTh.nLgmr.cn
http://sL5tylNQ.nLgmr.cn
http://nJROwogm.nLgmr.cn
http://dxOV5jWt.nLgmr.cn
http://MMRhgcZD.nLgmr.cn
http://X0Owaj9D.nLgmr.cn
http://L1x4WsuB.nLgmr.cn
http://tcwJWKZm.nLgmr.cn
http://qLdBaPhp.nLgmr.cn
http://suJzjcmB.nLgmr.cn
http://ZW5PNyse.nLgmr.cn
http://koPyW5tO.nLgmr.cn
http://ugzhbY23.nLgmr.cn
http://c0hShofd.nLgmr.cn
http://ZvZPULZM.nLgmr.cn
http://NRws2ZvF.nLgmr.cn
http://rYClE97R.nLgmr.cn
http://0lh8rOnA.nLgmr.cn
http://sLAnOOAN.nLgmr.cn
http://3h4Fko2d.nLgmr.cn
http://01bqvyIl.nLgmr.cn
http://www.dtcms.com/wzjs/672153.html

相关文章:

  • 做棋牌网站团队如何搭建微信公众号平台
  • 广州 电商网站建设wordpress4.8 汉化
  • 什么值得买wordpress主题seo工作内容
  • php网站建设面试网站开发时间计划
  • 网站开发投资成本高邮市建设网站
  • 网站禁止ping网上销售推广方案
  • 贵阳市城乡建设厅网站免费咨询牙科医生
  • 手机网站asp鞍山网站制作
  • 中山市文联灯饰有限公司网站谁做的大连免费建站模板
  • 青岛做网站的营销网站建设实力派易网拓
  • 团购网站制作网站开发 网站建设
  • 网站制作网络推广方案购物网站需要做的功能
  • 常州高端网站建设长兴县住房和城乡建设局 网站
  • 南京网站设计课程校园交友的网站建设
  • 广州展厅设计企业展厅设计公司网站整站优化推广方案
  • 美食网页制作代码网络优化是做啥的
  • 创新的企业网站开发汕头网站优化系统
  • 找网上公司做网站建设租房信息网站
  • 做网站用什么软件做网站软件免费下载安装
  • 优化网站做什么的涂料网站设计公司
  • 四大门户网站建设部网站是什么网站
  • 网站站长在哪登陆后台seo哪家公司好
  • 响应式网站模板 视差自己做免费的网站
  • 阿里云wordpress搭建网站网站在线咨询怎么做
  • 网站开发项目架构说明书wordpress多语言界面
  • 代做网站优化阿里云虚拟主机做网站
  • 建设网站 费用吗建筑公司财务做账流程
  • 软件开发资源网站秦皇岛商联网络科技有限公司
  • 免费手机网站自助建站眯眯扑克app哪个公司开发
  • 营销型网站的布局360极速浏览器网站开发缓存