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

网站商品台管理系统无锡百度公司王东

网站商品台管理系统,无锡百度公司王东,找专业公司做网站,网站的类型及特点1、访问器模式的提出 在软件开发过程中,早已发布的软件版本,由于需求的变化,需要给某个类层次结构增加新的方法。如果在该基类和子类中都添加新的行为方法,将给代码原有的结构带来破坏,同时,也违反了修改封…

1、访问器模式的提出

在软件开发过程中,早已发布的软件版本,由于需求的变化,需要给某个类层次结构增加新的方法。如果在该基类和子类中都添加新的行为方法,将给代码原有的结构带来破坏,同时,也违反了修改封闭,扩展开放的原则。访问器模式可以实现不改变原有代码结构的前提下,基于双向分发机制(2次虚函数绑定实例对象),通过扩展的方法实现新的接口。

2、需求描述

有2个固定数量的元素AB,每个元素有不同方法。A、B元素的方法有可能还会更新。请设计一个功能代码,可以应对方法更新的代码。

3、功能实现

(1)UML图如下:

 (2)代码实现如下:

#include <iostream>class ConcreteElementA;
class ConcreteElementB;
class Visitor
{
public:virtual void visitorElementA(ConcreteElementA& element)=0; //第二次虚函数virtual void visitorElementB(ConcreteElementB& element)=0;
};class Element
{
public:virtual void accept(Visitor& visitor)=0;    //第一次虚函数virtual ~Element(){};
};class ConcreteElementA:public Element
{
public:void accept(Visitor &visitor) override{visitor.visitorElementA(*this);}
};class ConcreteElementB:public Element
{
public:void accept(Visitor &visitor) override{visitor.visitorElementB(*this);}
};// 上面是稳定的代码结构 // 下面是扩展应对方法改变的功能类 
class ConcreteVisitor1:public Visitor
{
public:void visitorElementA(ConcreteElementA &element) override{std::cout << "Visitor1 process visitorElementA "<< &element << std::endl;}void visitorElementB(ConcreteElementB &element) override{std::cout << "Visitor1 process visitorElementB " << &element << std::endl;}
};class ConcreteVisitor2:public Visitor
{
public:void visitorElementA(ConcreteElementA &element) override{std::cout << "Visitor2 process visitorElementA " << &element<< std::endl;}void visitorElementB(ConcreteElementB &element) override{std::cout << "Visitor2 process visitorElementB " << &element << std::endl;}
};class Client{
public:void doWork(){ConcreteVisitor1 visitor1;ConcreteElementA element1A;element1A.accept(visitor1);ConcreteElementB element1B;element1B.accept(visitor1);ConcreteVisitor2 visitor2;ConcreteElementA element2A;element2A.accept(visitor2);ConcreteElementB element2B;element2B.accept(visitor2);}
};int main()
{Client obj;obj.doWork();return 0;
}

程序运行的结果如下:

 上面的代码,ConcreteElementA和ConcreteElementB的方法更新,通过Visitor基类的扩展子类来实现。

通过上面的代码可以看出,使用访问器模式的应用场景必须满足下面的条件:
(1)Element的子类个数必须确定。
(2)Visitor的子类必须实现Element的所有子类方法。

http://www.zhongyajixie.com/news/28618.html

相关文章:

  • 摄图网的图片可以做网站吗seo网站关键词
  • 有哪些做婚礼电子请柬的网站搜索引擎优化指南
  • 免费申请地图定位外贸seo公司
  • 武汉做网站做得好的设计工作室中关村在线app
  • 网站开发工具的是什么营销云
  • 怎么在京东做网站近一周新闻热点事件
  • 做海鲜代理在什么网站软文新闻发稿平台
  • 打代码怎么做网站免费推广的渠道有哪些
  • 怎么在vps上做网站百度百度地图
  • 做羊毛毡的网站长沙优化官网服务
  • 网站服务器安全防护2022重大时政热点事件简短
  • 怎样做当地网站推广专业黑帽seo推广
  • 网站建设公司的重要性市场推广计划书
  • 免费建设网站制作小吃培训去哪里学最好
  • 网站如何做好seo在线网站流量查询
  • wordpress simple主题百度网站排名搜行者seo
  • dedecms教育h5网站模板网络营销推广工具有哪些
  • 做网站可行性分析腾讯新闻发布平台
  • 橘子seo北京网站seo公司
  • 网站内页怎么做3322免费域名注册
  • 网站开发设计方案搜索引擎排名优化包括哪些方面
  • wordpress如何开启小绿锁广州网站优化
  • 做网站如何在百度快照上排名网络推广员的前景
  • 弹幕怎么做视频网站360安全浏览器
  • 朔州推广型网站建设百度推广手机登录
  • 文明校园建设专题网站山西网络推广专业
  • 网站建设可行性分析报告网站seo关键词优化
  • 淮安市住房和城乡建设局网站网址链接
  • 深圳网站建设十强河北网站建设公司排名
  • 郑州微信小程序开发哪家好关键词seo排名优化软件