- C++ 访问者模式
- 访问者模式有社么作用?
- 访问者模式代码举例
- 应用场景
我至今没遇到过使用访问者模式的工程级C++代码,但是从日常生活上却是一种常见的考虑问题的思路:
举个例子对比一下
参观别人家的公司的两种方式:
1 访问者模式:你(参观者)想要参观一家公司(被参观的对象),需要门禁卡才能进入,需要注册一张临时卡(C++中,就相当于注册到公司对象,注册进去,再把公司对象的this指针传入自己的功能函数中)),然后开始参观(调用公司类开放的接口,如GetValue之类的)。
2 组合模式:买下来这家公司成为老板(持有公司对象),自然可以参观各个部门,调用任何功能函数,那就没啥可讲的了,全是你的。
被访问的类
class Company
{
regist(vister *person)
{
person->lookcompany(this);
}
getValue()
{
cout<<"office security message"<
访问者
class vister
{
void lookCompany(company* office)
{
cout<<"关掉监控"//访问者自己的功能
office->getvalue();//调用公司类内部的功能
}
}
应用场景
我能想到的就是,你想临时给公司类加一个功能,这个功能主要是由访问者带来的,同时也会使用到公司类自有的功能,就用这个模式;那读者会问了,装饰模式不也一样嘛?其实不一样,装饰模式装饰类和公司类仍旧继承于同一个基类,装饰类仍旧属于公司,且与公司类一样的接口,只是会多了一些功能,那下一节就讨论下装饰模式。



