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

wordpress斌果主题抖音seo怎么做

wordpress斌果主题,抖音seo怎么做,知名的金融行业网站开发,seo优化易下拉排名图片转载自 #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.ds6.com.cn/news/108829.html

相关文章:

  • 做网站只开发手机端可不可以品牌策划推广方案
  • 青岛做企业网站的公司网站优化一年多少钱
  • 编写 网站 语言百度网站关键词排名查询
  • 可商用的图片素材网站如何在百度发布广告信息
  • 镇江 网站建设郑州seo询搜点网络效果佳
  • 延吉最好的网站建设公司东莞头条最新新闻
  • 加强网站建设的制度网页设计模板免费网站
  • 小企业网站 优帮云杭州排名优化公司电话
  • 网站制作定制图长沙网络营销顾问
  • 室内设计师怎么找seo引擎优化培训
  • 房山区网站建设华与华营销策划公司
  • 网络运营推广怎么做网站seo整站优化
  • 官方网站建设的意义自己怎么优化我网站关键词
  • 还有其他做问卷的网站吗seo网站外包公司
  • 天津品牌网站建设公司站长之家排行榜
  • 现在还用dw做网站设计么seo1短视频网页入口营销
  • 找人做网站域名怎么过户大数据营销软件
  • 网站合作推广方案云和数据培训机构怎么样
  • 济宁房产网站建设站长工具友链检测
  • 山东省住房和城乡建设厅电话号码成都seo
  • 梁山网站建设企业培训课程价格
  • 利用网站空间做代理2022年列入传销组织最新骗法
  • 建网站的英文企业宣传片制作
  • 聊城做网站的公司案例重大军事新闻
  • 做网站从哪里找货源推广资源网
  • 微信公众号模板哪里找seo 0xu
  • 怎么做网站自动响应百度上做推广怎么做
  • 777fj做最好的网站商品推广软文范例200字
  • 中学网站系统源码百度推广怎么做
  • 南京需要做网站的公司国内建站平台有哪些