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

成都快型网络公司排名关键词seo优化软件

成都快型网络公司排名,关键词seo优化软件,设计素材网站排行榜,wordpress ddns1、访问器模式的提出 在软件开发过程中,早已发布的软件版本,由于需求的变化,需要给某个类层次结构增加新的方法。如果在该基类和子类中都添加新的行为方法,将给代码原有的结构带来破坏,同时,也违反了修改封…

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.tj-hxxt.cn/news/117545.html

相关文章:

  • 中国建设企业协会网站首页搜索优化师
  • 小内存安装wordpressaso优化报价
  • vue做的网站影响收录么普通话手抄报文字内容
  • 辽宁省朝阳市做网站抖音seo排名优化
  • 企业网站建设的过程seo管理系统培训运营
  • 关于网站建设的好处上往建站
  • 网站编程好学吗网络营销网站平台有哪些
  • 手机网站代码下载关键词搜索指数
  • 大型网站设计首页实例外链怎么做
  • 直接做的黄页视频网站长沙网站推广公司排名
  • 广西网红排名前20名seo服务外包
  • 做网站的一般要多钱优化大师网页版
  • 火山开发软件可以开发网站吗班级优化大师app
  • 可以做图的网站百度搜索排名优化
  • php网站换服务器品牌营销推广策划公司
  • 美化网站公司seo外包 杭州
  • php 网站开发案例教程安徽网站推广公司
  • 如何做网站横幅今日热点新闻排行榜
  • 如今做哪些网站致富友情链接交换平台免费
  • 页面效果华丽的网站提高工作效率8个方法
  • 上海做网站公司排名免费网站大全下载
  • 柒零叁网站建设湖南长沙营销的手段和方法
  • 做视频资源网站有哪些推广普通话的意义是什么
  • 免费制作企业宣传视频appseo全网营销
  • 兰山做网站站长工具关键词排名怎么查
  • 建设网站的岗位青岛网站优化公司
  • 手机软件下载网站seo外链工具
  • 音乐网站开发提高工作效率的措施
  • 广告网站建设网络优化公司有哪些
  • 深圳市城乡住房和建设局网站引流用什么话术更吸引人