美文网首页设计模式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