美文网首页设计模式C++实现笔记
VISITOR 访问者(行为模式)

VISITOR 访问者(行为模式)

作者: lixin_karl | 来源:发表于2019-03-05 20:27 被阅读0次

介绍

visitor模式,又叫访问者模式,把结构和数据分开,编写一个访问者,去访问数据结构中的元素,然后把对各元素的处理全部交给访问者类。这样,当需要增加新的处理时候,只需要编写新的 访问者类,让数据结构可以接受访问者的访问即可。

参与者

visitor 访问者
concretevisitor 具体访问者
ele 数据
concreteele 具体数据类

class Ele;
class Visitor {
public:
    virtual void visitor(Ele &) = 0;
};

class Ele{
public:
    virtual void Accept(Visitor &visitor) = 0;
};

class ConcreteVisitor : public Visitor{
public:
    void visitor(Ele &)
    {
        std::cout<<"Visitor 处理 Ele 的数据"<<std::endl;
    }
};

class ConcreteEle : public Ele{
public:
    void Accept(Visitor& visitor) override
    {
        visitor.visitor(*this);
    }
};

int main()
{
    Ele *ele = new ConcreteEle();
    ConcreteVisitor v;
    v.visitor(*ele);
    return 0;
}

特点

  • 易于增加新的操作
  • 访问者集中相关的操作,分离无关的操作
  • 增加新的ConcreteEle类 很困难,因为要在visitor基类中增加访问的方法
  • 破坏封装性

参考

相关文章

网友评论

    本文标题:VISITOR 访问者(行为模式)

    本文链接:https://www.haomeiwen.com/subject/qygiuqtx.html