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

做信息图的网站有哪些广告联盟论坛

做信息图的网站有哪些,广告联盟论坛,wordpress安装 不了,海口市住房和城乡建设局 网站图片转载自 #include<iostream> using namespace std; #include<list> /*模板工厂单例化&#xff0c;所有的商品被注册进工厂中*/ /*访问者模式&#xff08;行为型模式&#xff09; 访问者&#xff0c;被访问者 visit accept 让访问变成一种操作&#xff0c;不同…

在这里插入图片描述
图片转载自

#include<iostream>
using namespace std;
#include<list>
/*模板工厂单例化,所有的商品被注册进工厂中*/
/*访问者模式(行为型模式)
访问者,被访问者
visit   accept
让访问变成一种操作,不同的访问操作有具体的实现,但是无需修改源代码(准确点说,是无需修改被访问者的源代码)
只需要增加新的具体访问类即可。局部的符合开闭原则,只是访问者类需要进行扩展和少量修改
在vitst方法中以被访问者作为参数,方法体是被访问者调用accept方法
*/
class Apple;
class Book;class Vistor
{
public:void set_name(std::string name){_name = name;}virtual void visit(Apple* apple) = 0;virtual void visit(Book* book) = 0;
protected:std::string _name;//观察者的名字
};class Customer :public Vistor
{void visit(Apple* apple){cout << "顾客" << _name << "挑选苹果" << endl;}void visit(Book* book){cout << "顾客" << _name << "买书"<<endl;}
};class Saler :public Vistor
{void visit(Apple* apple){cout << "收银员" << _name << "称苹果" << endl;}void visit(Book* book){cout << "收银员" << _name << "计算书价" << endl;}
};class Product
{
public:virtual void accept(Vistor* vistor) = 0;
};class Apple :public Product
{
public:void accept(Vistor* vistor)override{vistor->visit(this);}
};class Book :public Product
{
public:void accept(Vistor* vistor)override//在具体的被访问者类中的accept方法,参数都是访问者的父类{vistor->visit(this);}
};class ShoppingCart//管理者,可以增加或删除商品
{
public:void accept(Vistor* vistor){for (auto prd : _prd_list)prd->accept(vistor);}void addProduct(Product* product){_prd_list.push_back(product);}void removeProduct(Product* product){_prd_list.remove(product);}
private:std::list<Product*> _prd_list;
};int main()
{Book book;Apple apple;ShoppingCart basket;basket.addProduct(&book);basket.addProduct(&apple);Customer customer1;customer1.set_name("小明");basket.accept(&customer1);Saler saler;saler.set_name("小米");basket.accept(&saler);return 0;
}

这个示例代码写得一般,重点理解上面那张图:访问者模式就是在新增一个visitor类,visitor的visit方法定义参数为物品的抽象父类,同时在accepter中增加accept方法,accept方法参数为visitor,这样当具体访问者,调用其visit方法,方法体为accepter.accept()。

可以看到在保证accepter的数据结构不发生变化的情况下(没有新增或者删除),可以非常方便增加新的一种访问方法,只需要新增加一个访问类即可,但是如果我们数据结构发生变化之后,就需要修改继承自Visitor类的所有类了,这也违背了开闭原则,因此我们应该认真考虑,到底我们的数据结构是定死的还是经常变化的。没有任何一种设计模式是十全十美的,总是有所取舍,有所利弊,根据实际情况来选择才是最好的设计方法。

http://www.hengruixuexiao.com/news/5916.html

相关文章:

  • 我想在家给工厂加工活关键词优化公司哪家推广
  • 有网站了小程序怎么做软件开发平台
  • 做的很垃圾的网站在线磁力搜索引擎
  • 网站h标签十大舆情网站
  • 网站架构图的制作网站权重等级
  • 工业和信息化部网站备案系统是什么全球疫情最新数据
  • 肥西做网站厦门关键词优化seo
  • 免费做相册video的网站安徽seo优化规则
  • 企业如何做网站收款品牌营销策划是干嘛的
  • 做网络作家哪个网站好广告推广平台网站
  • 备案价网站手机百度搜索引擎
  • 建站兔软件下载手机制作网站的软件
  • 重庆网站建设专家社交网络的推广方法
  • 大概开发一个网站多少钱广州网站推广平台
  • 建设网咨询武汉seo价格
  • 做好网站建设网络营销师怎么考
  • 高端手机网站百度搜索引擎投放
  • 网站做电源网页设计模板素材图片
  • 企业网站实名制市场调研报告模板范文
  • 做网站要什么语言百度云网盘下载
  • 无锡有人代做淘宝网站吗互联网推广公司
  • 万网空间seo排名软件
  • 网站规划有前途吗seo包年优化
  • 铜陵网站建设价格百度识图在线识别网页版
  • wordpress响应式主题设计seo自己怎么做
  • 爱未来企业邮箱网站seo推广营销
  • 苏州网站建设要多少钱seo难不难
  • 网站开发建设及推广合同百度app下载安装官方免费版
  • 电子商务网站开发 什么框架搜索引擎下载安装
  • 如何建设好政府门户网站推广业务