学习AA大神c++设计新思维笔记:10访问者模式
访问者模式
用来不改变原继承体系下,实现新的功能.方便添加新类
,但不容易添加新虚函数
,可以参考这里,两个是一样的.只是祁大神的
的没有返回的R
参数.
访问者,始终有个动转
.能否再用CRTP
消灭掉这个运转呢?
将各种概念性操作,提取出来,放在一起.
应该这样,提取出最基本的操作
,然后扩展,泛化
.
无循环访问,与循环访问.尽量把代码
提取到库中.
访问器依赖每个待访问类,在每个允许访问的类中,加个允许访问宏.当然参数为(基访问器*
)
通过这个基访问基*
实现多态.当然也可不用宏,具体实现.
可以找型列
相似结构.元<型名...T>();
,catchall
是处理各种异常/错误
的意思.访问者最适合对象上操作截然不同且互不相干
,这样围绕某个概念的实现聚集在一起.理想是只添加,不修改
.
元<型名 R,类 T列表>
类 循环访问者:公 访问者<T列表,R>
{
公:
又 R 中类型;
元<类 访问>
中类型 通用访问(访问&主机)
{
访问者<访问,中类型>&子对象=*本;
中 子对象.访问(主机);
}
};
#定义 定义循环可访问(一些访问者)\
虚 一些访问者::中类型 接受(一些访问者&客户)\
{中 客户.通用访问(*本);}
//循环访问者
又 循环访问者<空,类型列表_3(基元素,发明,问题日志)>一访问者;
构 成就访问者:公 一访问者{//依赖接口而实现
空 访问(基元素&be){}
空 访问(发明&发明){}
空 访问(问题日志&f){}
};//使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现