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

asp语言的网站建设自己做网站的流程

asp语言的网站建设,自己做网站的流程,北京便宜做网站,ui设计稿图片转载自 #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.tj-hxxt.cn/news/58753.html

相关文章:

  • 百度站长工具域名查询移动营销
  • 微商刚起步怎么找客源卢镇seo网站优化排名
  • wordpress修改底部联系QQ郑州网站优化推广
  • 网站改版如何做301长沙靠谱seo优化
  • 苏州做企业网站b站网页入口
  • 网站弹出广告gif出处企业网站优化公司
  • 台州网站制作建设中国网站建设公司前十名
  • 自己做头像的网站非流光长安网站优化公司
  • 黄山网站设计网站如何宣传推广
  • 东莞公司网站制作要多少钱安卓优化神器
  • 个人备案网站做淘宝客可以用吗孝感seo
  • 深圳做积分商城网站建设江西短视频seo搜索报价
  • 网站404页面设置深圳网络营销推广培训
  • dedecms购物网站模板下载网站收录服务
  • 池州网站建设费用绍兴百度seo
  • 手机上自己做网站吗深圳网络营销平台
  • 接网站开发做多少钱网络推广的话术怎么说
  • 做电影下载网站需要什么软件好外包平台
  • wordpress无法下载夜狼seo
  • 学院招生网站建设方案百度数据库
  • 百度怎样建立网站网站开发公司哪家好
  • 酒类公司网站模板童程童美少儿编程怎样收费
  • 攀枝花网站开发惠州seo关键字优化
  • 昆明 做网站 vr怎么恶意点击对手竞价
  • 广东新闻联播在线直播轻松seo优化排名
  • 拔别人的网站做网站合法吗app推广项目从哪接一手
  • 大型o2o网站开发时间账户竞价托管哪里好
  • 只做山寨的网站电商培训学校
  • 青岛做网站建公司seo优化软件
  • 做b2b需要建网站吗搜索引擎优化的技巧