文章目录
本文定义模式设计中行为型模式的解析,主要讲解访问者模式、责任链模式和备忘录模式。本文内容来至互联网内容的编辑修改,方便读者学习。如有侵权,第一时间联系作者删除。
1.访问者模式
- 1.访问者模式
- 2.责任链模式
- 3.备忘录模式
- 4.作者答疑
访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间耦合解脱开,使得操作几何可以相对自由地演化。 访问者模式的目的使要把处理从数据结构中分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较合适的。
// VisitorModel.h文件
#pragma once
#include
#include
#include
#include
class Visitor;
// 被访问元素
class Element
{
protected:
std::string m_strName;
public:
Element(std::string str)
{
m_strName = str;
}
std::string getName()
{
return m_strName;
}
virtual void Accept(Visitor * visitor) = 0;
};
class ConcreteElementA : public Element
{
public:
ConcreteElementA(std::string str) : Element(str) {}
void Accept(Visitor * visitor);
};
class ConcreteElementB : public Element
{
public:
ConcreteElementB(std::string str) : Element(str) {}
void Accept(Visitor * visitor);
};
// 访问者
class Visitor
{
public:
virtual void VisitConcreteElementA(ConcreteElementA * p) = 0;
virtual void VisitConcreteElementB(ConcreteElementB * p) = 0;
};
class ConcreteVisitorA : public Visitor
{
public:
void VisitConcreteElementA(ConcreteElementA * p)
{
std::cout
关注
打赏
热门博文
- Adobe illustrator插件开发-SPInterfaceSuite-插件A向插件B传递消息-插件通信-AI插件开发
- javascript-ztree-树形控件-初始化-加载节点数据-节点数据获取
- Adobe illustrator插件开发-坐标系统-AIHardSoftSuite-画板坐标-页面坐标-AI插件开发
- Adobe illustrator插件开发-AIUIDUtilsSuite-AIUIDPoolSuite-AIUIDSuite-AIUIDREFSuite-Art唯一标识符与索引-AI插件开发
- C++-逆向分析-类的成员函数地址与对象地址动态绑定-this指针-成员函数和成员虚函数反汇编解析
- C++-逆向分析-结构体和类-内存布局-this指针-静态数据成员-对象作为参数和返回值
- Adobe illustrator插件开发-命令名称-AddCommand -AI插件开发
- Adobe illustrator插件开发-事件-PlugPlugAddEventListener-向系统注册事件-AI插件开发
- Adobe illustrator插件开发-ole拖拽粘贴交换数据格式-RegisterClipboardFormat函数-AI插件开发
- Adobe illustrator插件开发-所有模块列表-内部存在大量非公开的Suite-AI插件开发