Visitor模式

作者: 老练子丶2017 | 来源:发表于2017-11-24 11:38 被阅读0次

不破坏类封装的前提下,添加新的操作

你中有我,我中有你么?

Visitor.h

#ifndef _VISITOR_H

#define _VISITOR_H

#include <iostream>

using namespace std;

class Element;

class Visitor

{

public:

virtual ~Visitor() {

}

virtual void VisitConcreteElementA(Element* element)=0;

virtual void VisitConcreteElementB(Element* element)=0;

protected:

Visitor() {

}

};

class Element

{

public:

virtual ~Element() {

}

virtual void Accept(Visitor* vis)=0;

protected:

Element() {

}

};

class ConcreteElementA : public Element

{

public:

ConcreteElementA() {

}

~ConcreteElementA() {

}

void Accept(Visitor* vis) {

cout << "ConcreteElementA" << endl;

vis->VisitConcreteElementA(this);

}

};

class ConcreteElementB : public Element

{

public:

ConcreteElementB() {

}

~ConcreteElementB() {

}

void Accept(Visitor* vis) {

cout << "ConcreteElementB" << endl;

vis->VisitConcreteElementB(this);

}

};

class ConcreteVisitorA : public Visitor

{

public:

ConcreteVisitorA() {

}

~ConcreteVisitorA() {

}

void VisitConcreteElementA(Element* element) {

cout << "VisitConcreteElementA:A" << endl;

}

void VisitConcreteElementB(Element* element) {

cout << "VisitConcreteElementA:B" << endl;

}

};

class ConcreteVisitorB : public Visitor

{

public:

ConcreteVisitorB() {

}

~ConcreteVisitorB() {

}

void VisitConcreteElementA(Element* element) {

cout << "VisitConcreteElementB:A" << endl;

}

void VisitConcreteElementB(Element* element) {

cout << "VisitConcreteElementB:B" << endl;

}

};

#endif // _VISITOR_H

Visitor.cpp

#include "Visitor.h"

int main()

{

Visitor* vis = new ConcreteVisitorA();

Element* element = new ConcreteElementA();

element->Accept(vis);

return 0;

}

编译:make Visitor

相关文章

  • Visitor模式

    不破坏类封装的前提下,添加新的操作 你中有我,我中有你么? Visitor.h #ifndef _VISITOR_...

  • Calcite中visitor模式

    介绍 本文记录calcite中visitor模式的应用,具体visitor本身基础知识不再赘述,详见https:/...

  • 设计模式之访问者模式

    访问者模式 Visitor Intro 访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作,它...

  • [Android]设计模式-访问者模式

    [Android]设计模式-访问者模式 访问者模式 Visitor 【备注】只用于个人收藏

  • 设计模式-visitor

    visitor模式可以分离对象和操作,满足开闭原则。对象的操作都抽象在visitor中,使用了重载方法。 例子 v...

  • 设计模式(24)之访问者模式

    访问者模式(Visitor Pattern)提供了Visitor类,作用于某对象的各个类型(子类)的操作,实现了在...

  • 大牛分享的几种设计模式及知识要点(完)

    一、访问者模式(Visitor Pattern ) 定义:Represent an operation to be...

  • 设计模式[23]-访问者模式-Visitor Pattern

    1.访问者模式简介 访问者模式(Visitor Pattern)模式是行为型(Behavioral)设计模式,提供...

  • 17. visitor模式

    访问数据结构并处理数据 在数据结构中保存者许多元素,我们会对元素进行处理。那么处理元素的代码应该放在什么地方才便于...

  • Visitor模式(行为型)

    问题 在面向对象系统的开发和设计过程中,经常会遇到一种情况就是需求变更,经常我们做好的一个设计、实现了一个系统原型...

网友评论

    本文标题:Visitor模式

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