学习AA大神c++设计新思维笔记:10访问者模式

访问者模式

用来不改变原继承体系下,实现新的功能.方便添加新类,但不容易添加新虚函数,可以参考这里,两个是一样的.只是祁大神的的没有返回的R参数.
访问者,始终有个动转.能否再用CRTP消灭掉这个运转呢?
将各种概念性操作,提取出来,放在一起.
应该这样,提取出最基本的操作,然后扩展,泛化.
无循环访问,与循环访问.尽量把代码提取到库中.
访问器依赖每个待访问类,在每个允许访问的类中,加个允许访问宏.当然参数为(基访问器*)
通过这个基访问基*实现多态.当然也可不用宏,具体实现.
可以找型列相似结构.元<型名...T>();,catchall是处理各种异常/错误的意思.访问者最适合对象上操作截然不同且互不相干,这样围绕某个概念的实现聚集在一起.理想是只添加,不修改.

<型名 R,类 T列表>
类 循环访问者:公 访问者<T列表,R>
{:
    又 R 中类型;<类 访问>
    中类型 通用访问(访问&主机)
    {
        访问者<访问,中类型>&子对象=*;
        中 子对象.访问(主机);
    }
};

#定义 定义循环可访问(一些访问者)\
    虚 一些访问者::中类型 接受(一些访问者&客户)\
    {中 客户.通用访问(*);}
//循环访问者
    又 循环访问者<,类型列表_3(基元素,发明,问题日志)>一访问者;
    构 成就访问者:公 一访问者{//依赖接口而实现
        空 访问(基元素&be){}
        空 访问(发明&发明){}
        空 访问(问题日志&f){}
    };//使用

你可能感兴趣的:(笔记)