Visitor模式实践
刚刚学习了一下设计模式的VISTOR模式,感觉里面的限制是比较大。要使用虚拟成员,固定的类层次结构。于是想实现以个更简单的visitor模 式。 使用了boost里面的function和绑定库,因为c++标准对type_info支持的太少,高性能而又可移植实现现在还想不到。所以就使用了VC对 type_info的扩充功能raw_name。 实现与源码如下: #include #include #include #include #include #include class multi_function { public: typedef multi_function self_type; private: struct op_type { op_type(void (self_type::*cast) (boost::any &) const, boost::function1 const &op) :m_cast(cast), m_fun(op) { } void (self_type::*m_cast)(boost::any &) const; boost::function1 m_fun; op_type() :m_cast(0), m_fun(){} }; typedef std::map
Visitor模式实践相关推荐
- 设计模式学习笔记--访问者(Visitor)模式
写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式:每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案:当我们碰到模式 ...
- 行为模式之Visitor模式
1.意图 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 2.适用性 (1)一个对象结构包含很多类对象,它们有不同的接口,而你想对这些实施一些 ...
- 设计模式--访问器(Visitor)模式
模式定义 表示一个作用于某对象结构中的各元素的操作,使得可以在不改变(稳定)各元素的类的前提下定义(扩展)作用于这些元素的新操作(变化) 类图 要点总结 Visitor模式通过所谓双重分发(doubl ...
- 设计模式学习笔记——访问者(Visitor)模式
设计模式学习笔记--访问者(Visitor)模式 @(设计模式)[设计模式, 访问者模式, visitor] 设计模式学习笔记访问者Visitor模式 基本介绍 访问者案例 类图 实现代码 Visit ...
- rsync守护进程模式实践排错08
rsync守护进程模式实践排错08说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto ...
- 设计模式 - Visitor 模式(访问者模式)
作用:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. UML结构图: 解析: Visitor模式把对结点的访问封装成一个抽象基类,通过派生 ...
- Visitor模式学习
意图: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 似乎理解很麻烦,其实说白了,就是动态的给已经写好的代码(类)加入新的功能! 当然,首 ...
- 设计模型之Visitor模式-图书馆管理系统应用C++实现
今天看到<<软件设计师>>面向对象第七章讲到几种设计模式,其中一种为Visitor模式.这种设计模式通过访问者对象的建立,在访问过程中将访问者作为参数传到被访问对象的函数中,实 ...
- visitor 模式
考虑一下设计一个可以包含长方形.正方形.圆形以及文字的视图类.因为视图中每种元素的显示方式都不一样,所以我们很容易做出如下的设计: 在这里,我使用了COMPOSITE模式.对于COMPOSITE模式, ...
最新文章
- java使用linux常用命令_linux常用Java程序员使用命令(一)
- JAVA可以用来开放游戏吗?
- Yaf框架视频教程之入门篇【已完成】
- linux 网络测试脚本,linux检查网络状态脚本
- java jdbc jar包_通过 Spring 框架如何进行JDBC操作呢?
- iOS 8 新特性介绍
- asp.net 2.0
- nyist 299 Matrix Power Series
- Newtonsoft.Json的使用
- python做大型网站_django可以开发大型网站吗
- Cocos2dx ParticleEditor粒子编辑器
- 初探OSG+OpenCascade(简称:OCC)在QT上的实践
- 零基础怎么学习单片机?
- 《春秋·战国》大事年表
- cmd文件和bat文件的区别+一个的bat脚本+bat基础知识
- 如何通过提问识人(行为面试法)
- linux创建sudo用户组,如何将用户添加到sudo组
- IRM电源维修XRM65P50X3402高压发生器维修
- 瑰珀翠全新伊芙琳玫瑰系列全球首发
- C++基础入门(从了解C++到Hello World)