当前位置: 首页 > news >正文

洛阳做网站找哪家网络视频营销

洛阳做网站找哪家,网络视频营销,黄石网站建设价格,九江网站推广C 设计模式之访问者模式 简介 1、访问者模式 (Visitor)是一种行为型设计模式,它表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 使用该模式可以在不修改已有程序结构的前提…

C++ 设计模式之访问者模式

简介

1、访问者模式 (Visitor)是一种行为型设计模式,它表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 使用该模式可以在不修改已有程序结构的前提下,通过添加额外的访问者类实现新的操作。

2、访问者模式 (Visitor)应用场景包括但不限于:
2.1、对象结构比较稳定,但操作经常变化的程序。
2.2、需要对一个对象结构中的对象进行很多不同而且不相关的操作,而你想避免让这些操作“污染”这些对象的类。

3、访问者模式 (Visitor)的构成
3.1、访问者(Visitor):定义了一个访问操作中的元素的接口。这个接口使得访问者可以不修改类的结构就可以增加新的操作。

class DocumentVisitor
{
public:virtual ~DocumentVisitor() {}virtual void visitParagraph(class ParagraphElement* element) = 0;virtual void visitImage(class ImageElement* element) = 0;virtual void visitTable(class TableElement* element) = 0;
};

3.2、元素(Element):声明一个接受访问者对象的接口。这个接口通常包含一个或多个由访问者接口定义的方法。

class DocumentElement
{
public:virtual ~DocumentElement() {}virtual void accept(DocumentVisitor* visitor) = 0;
};

4、访问者模式 (Visitor)的优点
4.1、封装性: 可以在不改变元素类的情况下定义新的操作。
4.2、扩展性: 新的访问者可以很容易地添加新的操作。
4.3、分离关注点: 移动相关的操作集中到访问者中,而不是分散在元素类中。

5、访问者模式 (Visitor)的缺点
5.1、违反封装: 访问者可能需要访问元素的内部细节,这通常意味着元素必须暴露一些原本应该是私有的数据。
5.2、复杂度: 可以使系统变得更加复杂,特别是当系统有大量元素时。
5.3、对象结构变化困难: 如果经常改变对象结构的元素类,那么维护访问者模式将会非常麻烦。

简单示例

1、定义

// 抽象访问者
class DocumentVisitor
{
public:virtual ~DocumentVisitor() {}virtual void visitParagraph(class ParagraphElement* element) = 0;virtual void visitImage(class ImageElement* element) = 0;virtual void visitTable(class TableElement* element) = 0;
};// 元素基类
class DocumentElement
{
public:virtual ~DocumentElement() {}virtual void accept(DocumentVisitor* visitor) = 0;
};class ParagraphElement : public DocumentElement
{
public:void accept(DocumentVisitor* visitor);
};class ImageElement : public DocumentElement
{
public:void accept(DocumentVisitor* visitor);
};class TableElement : public DocumentElement
{
public:void accept(DocumentVisitor* visitor);
};// 渲染访问者
class RenderVisitor : public DocumentVisitor
{
public:void visitParagraph(class ParagraphElement* element);void visitImage(class ImageElement* element);void visitTable(class TableElement* element);
};// 检查访问者  
class CheckVisitor : public DocumentVisitor
{
public:void visitParagraph(class ParagraphElement* element);void visitImage(class ImageElement* element);void visitTable(class TableElement* element);
};

2、实现

void ParagraphElement::accept(DocumentVisitor* visitor)
{visitor->visitParagraph(this);
}void ImageElement::accept(DocumentVisitor* visitor)
{visitor->visitImage(this);
}void TableElement::accept(DocumentVisitor* visitor)
{visitor->visitTable(this);
}void RenderVisitor::visitParagraph(class ParagraphElement* element)
{std::cout << "Render Paragraph" << std::endl;
}void RenderVisitor::visitImage(class ImageElement* element)
{std::cout << "Render Image" << std::endl;
}void RenderVisitor::visitTable(class TableElement* element)
{std::cout << "Render Table" << std::endl;
}void CheckVisitor::visitParagraph(class ParagraphElement* element)
{std::cout << "Check Paragraph" << std::endl;
}void CheckVisitor::visitImage(class ImageElement* element)
{std::cout << "Check Image" << std::endl;
}void CheckVisitor::visitTable(class TableElement* element)
{std::cout << "Check Table" << std::endl;
}

3、调用

std::vector<DocumentElement*> vecDoc = {new ParagraphElement(),new ImageElement(),new TableElement()
};
RenderVisitor renderVisitor;
CheckVisitor checkVisitor;for (auto elem : vecDoc)
{elem->accept(&renderVisitor);elem->accept(&checkVisitor);
}for (auto el : vecDoc)
{delete el;
}
http://www.15wanjia.com/news/41096.html

相关文章:

  • 哪个平台做网站好营销策划公司的经营范围
  • 有没有专业做股指的评论网站奶茶网络营销策划方案
  • 贵南县wap网站建设公司网络营销平台名词解释
  • 建设网站公司专业服务站长工具最近查询
  • 昆明百度智能建站湛江seo推广外包
  • 政府网站建设解决方案做任务赚佣金的正规平台
  • 蕲春做网站电商培训机构排名前十
  • 企业内部系统网站制作百度指数是什么
  • 做照片书的网站好seo推广外包企业
  • 网站基础建设和管理暂行办法人民日报最新头条10条
  • 手机网站引导页今日热点新闻15条
  • 网站建设公司发展理念宣传渠道和宣传方式有哪些
  • 山东建设工程上传原件的网站seo服务工程
  • 政治工作网站管理建设上海网络推广公司网站
  • 营销型企业网站报价腾讯企点
  • 广州天河区网站建设推广方案框架
  • 内网如何做网站访问如何注册一个域名
  • 在门户网站上做推广河北seo关键词排名优化
  • 中国建设银行网站人工客服电话网络营销的核心是用户吗
  • 网站开发前期调研如何在百度上建立网站
  • 公司网站建设应注意什么seo整站优化推广
  • 在线支付网站制作西安百度seo排名
  • PC端网站开发以及设计费用百度竞价托管公司
  • 多国语言网站建设手机制作网站的软件
  • 什么网站做弹窗广告好宁德市人力资源和社会保障局
  • 如何为网站做面包屑导航一个网站的seo优化有哪些
  • 一般网站后台都是哪里做兔子bt搜索
  • 搜狐做app的网站seo视频
  • 网站建设战略伙伴建立一个网站需要多少钱?
  • 搜题在线使用网页版seo网站排名优化软件是什么