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

免费建站自己的网址高校网站建设方案

免费建站自己的网址,高校网站建设方案,wordpress主题 演员,南通企业建站模板定义 访问器模式#xff08;Visitor Pattern#xff09;是一种将数据结构与数据操作分离的设计模式#xff0c;它可以将对数据的操作添加到数据结构中#xff0c;而不必修改已有的数据结构。这允许我们定义新的操作#xff0c;而不需要修改已有的类结构。 访问器模式通常…定义 访问器模式Visitor Pattern是一种将数据结构与数据操作分离的设计模式它可以将对数据的操作添加到数据结构中而不必修改已有的数据结构。这允许我们定义新的操作而不需要修改已有的类结构。 访问器模式通常用于以下场景 当一个数据结构包含许多不同类型的对象你想对这些对象实施一些依赖于其具体类的操作而不希望修改这些类的结构。需要对一个数据结构进行很多不同且不相关的操作你想避免让这些操作污染这些对象的类。 示例 以下是一个使用C实现的访问器模式的简单示例 #include iostream #include vector // 定义元素类型 enum ElementType { INT, DOUBLE, STRING }; // 定义元素基类 class Element { public: virtual ~Element() default; virtual ElementType getType() const 0; virtual void accept(class Visitor visitor) 0; // 声明接受访问者的函数 }; // 具体元素类型 class IntElement : public Element { private: int value; public: IntElement(int v) : value(v) {} ElementType getType() const override { return INT; } void accept(class Visitor visitor) override { visitor.visit(this); } // 调用访问者的visit函数 int getValue() const { return value; } }; class DoubleElement : public Element { private: double value; public: DoubleElement(double v) : value(v) {} ElementType getType() const override { return DOUBLE; } void accept(class Visitor visitor) override { visitor.visit(this); } // 调用访问者的visit函数 double getValue() const { return value; } }; class StringElement : public Element { private: std::string value; public: StringElement(const std::string v) : value(v) {} ElementType getType() const override { return STRING; } void accept(class Visitor visitor) override { visitor.visit(this); } // 调用访问者的visit函数 const std::string getValue() const { return value; } }; // 定义访问者基类 class Visitor { public: virtual ~Visitor() default; virtual void visit(IntElement* element) 0; virtual void visit(DoubleElement* element) 0; virtual void visit(StringElement* element) 0; }; // 具体访问者 class ConcreteVisitor : public Visitor { public: void visit(IntElement* element) override { std::cout IntElement: element-getValue() std::endl; } void visit(DoubleElement* element) override { std::cout DoubleElement: element-getValue() std::endl; } void visit(StringElement* element) override { std::cout StringElement: element-getValue() std::endl; } }; int main() { std::vectorElement* elements; elements.push_back(new IntElement(10)); elements.push_back(new DoubleElement(3.14)); elements.push_back(new StringElement(Hello World)); ConcreteVisitor visitor; for (auto element : elements) { element-accept(visitor); } // 清理内存 for (auto element : elements) { delete element; } return 0; } 解释 数据结构我们定义了Element作为元素的基类并提供了三个具体的元素类型IntElement、DoubleElement和StringElement。每个具体元素类型都实现了accept方法该方法接受一个Visitor对象。访问者Visitor是访问者的基类定义了三个visit方法每个方法对应一个具体的元素类型。ConcreteVisitor是具体的访问者类它实现了Visitor的所有方法并在每个方法中实现了对应的操作。操作在main函数中我们创建了一个元素列表并遍历该列表对每个元素调用其accept方法并传入ConcreteVisitor对象。这样ConcreteVisitor就可以对每个元素执行相应的操作而不需要知道元素的具体类型。 访问者模式允许我们在不修改已有类结构的情况下增加新的操作。例如如果我们要添加一个新的操作只需要定义一个新的访问者类实现其visit方法而不需要修改已有的元素类。这种灵活性使得访问者模式在处理复杂的数据结构和对数据结构进行多种操作时非常有用。 扩展性由于访问者模式将数据结构与数据操作分离所以添加新的操作变得非常容易。你只需实现一个新的访问者类而不需要修改已有的元素类。同样地如果你需要添加新的元素类型你只需要实现新的元素类并更新访问者类以包含对新元素类型的处理。 封装性访问者模式允许你封装复杂的数据结构并通过访问者对象来提供对这些数据的操作。这意味着客户端代码可以保持简单只与访问者接口交互而不需要了解数据结构的内部细节。 双重分派访问者模式实现了一种称为双重分派double dispatch的技术。这意味着方法的选择不仅依赖于对象的类型如IntElement、DoubleElement等还依赖于在运行时调用的方法如visit。这种分派机制使得可以在运行时动态地确定应该执行哪个操作。 注意事项虽然访问者模式具有很多优点但也有一些潜在的问题。例如如果你频繁地添加新的元素类型或操作可能会导致访问者类变得非常庞大和复杂。此外如果访问者类之间有很多共享的逻辑可能需要考虑将这些共享逻辑提取到一个公共的基类或辅助类中以避免代码重复。 总结 访问者模式是一种强大的设计模式它允许你在不修改已有类结构的情况下增加新的操作。通过将数据结构与数据操作分离访问者模式提供了灵活性和扩展性使得你可以轻松地处理复杂的数据结构和对这些数据进行多种操作。然而你也需要注意避免访问者类变得过于庞大和复杂以及处理共享逻辑的问题。
http://www.pierceye.com/news/751250/

相关文章:

  • 佛山市建设企业网站服务机构普通网站建设计入什么科目
  • 阿里虚拟机建设网站网络科技有限公司营业执照
  • 如何申请建设网站首页培训机构怎么做线上推广
  • 网站维护升级访问中做网站工单
  • 如何用ae做模板下载网站电脑网站建设规划
  • 北京京水建设集团有限公司网站西青做网站
  • 自己建的网站可以用笔记本做服务器吗网站建设后台系统有哪些
  • 做的asp网站手机号码网站开发软件手机版
  • android 做电子书下载网站网络热词作文
  • 网络网站销售龙岩建筑网
  • 专门找事做的网站iis7 wordpress伪静态规则
  • 做字体的网站济宁网站建设 济宁智雅
  • 工程门户网站建设怎样制作表白网站
  • 手机如何创建个人网站上海 .net网站建设
  • 小程序app软件定制开发首页排名优化公司
  • 红酒 专业 网站建设视频网站后台
  • 宁波网站建设58同城百度突然搜不到网站
  • 网站开发技术和seo的联系wordpress发邮件卡主
  • 网站开发安全模块方案网站运营方案怎么写?
  • 章丘网站制作手机网站 微信平台
  • 自定义功能的网站做坏事网站
  • 做农村电子商务的网站有哪些wordpress批量修改引用网址
  • 简述建立网站的步骤内蒙古建设监理协会网站
  • 网站上传格式工信部 网站备案查询
  • 网站开发怎么让别人看到网站设计主流尺寸
  • 都匀经济开发区建设局网站华宇网站建设
  • 南谯区住房和城乡建设局网站大连百度推广优化
  • 东莞设计网站公司被邀请做刷客会不会碰到钓鱼网站
  • 阿里云服务器多个网站南充网络推广
  • 电子商务网站建设规划设计任务书wordpress 有道云笔记