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

湖南做网站 地址磐石网络无锡seo培训

湖南做网站 地址磐石网络,无锡seo培训,wordpress backwpup,上海网站建设q479185700棒访问者模式是一种行为型设计模式,它可以在不修改现有代码结构的情况下,为复杂的对象结构添加新的操作。该模式将数据结构和数据操作进行分离,使得数据结构可以独立于操作进行变化,同时也可以在不改变操作的前提下增加新的操作。 在…

        访问者模式是一种行为型设计模式,它可以在不修改现有代码结构的情况下,为复杂的对象结构添加新的操作。该模式将数据结构和数据操作进行分离,使得数据结构可以独立于操作进行变化,同时也可以在不改变操作的前提下增加新的操作。
在访问者模式中,主要有以下几个角色:
① 访问者(Visitor):定义了对每个元素对象访问时所要执行的操作,可以通过多态实现针对不同元素的不同操作。
② 具体访问者(ConcreteVisitor):实现了访问者定义的接口,完成对元素对象的具体操作。
③ 元素(Element):定义了一个 `accept` 方法,用于接受访问者的访问。
④ 具体元素(ConcreteElement):实现了元素定义的接口,通常会在 `accept` 方法中调用访问者的方法。
⑤ 对象结构(ObjectStructure):包含一个元素的集合,通常提供一个方法让访问者遍历所有元素。
访问者模式适用于对象结构比较稳定,但经常需要在此对象结构上定义新的操作的情况,或者有复杂的对象结构需要一些独立的操作的情况。

1、场景设计

实现场景:对象结构中定义A、B两个元素,访问者对它们进行访问。

2、C++实现

`Visitor` 是抽象访问者类,`ConcreteVisitor` 是具体访问者类,`Element` 是抽象元素类,`ConcreteElementA` 和 `ConcreteElementB` 是具体元素类。`ObjectStructure` 是对象结构类,包含了一个元素的集合,可以接受访问者的访问。在 `main` 函数中,我们创建了一个具体的访问者和一个对象结构,然后向对象结构中添加了两个具体元素,最后让访问者访问对象结构。 

#include <iostream>
#include <vector>// 前置声明,防止循环引用
class ConcreteElementB;// 抽象访问者类
class Visitor {public:virtual void visit(ConcreteElementB* element) = 0;
};// 具体访问者类
class ConcreteVisitor : public Visitor {public:void visit(ConcreteElementB* element) override {std::cout << "ConcreteVisitor is visiting ConcreteElementB" << std::endl;}
};// 抽象元素类
class Element {public:virtual void accept(Visitor* visitor) = 0;
};// 具体元素类A
class ConcreteElementA : public Element {public:void accept(Visitor* visitor) override {std::cout << "ConcreteElementA is accepting visitor" << std::endl;}
};// 具体元素类B
class ConcreteElementB : public Element {public:void accept(Visitor* visitor) override {visitor->visit(this);}
};// 对象结构类
class ObjectStructure {private:std::vector<Element*> elements;public:void addElement(Element* element) {elements.push_back(element);}void accept(Visitor* visitor) {for (Element* element : elements) {element->accept(visitor);}}
};int main() {ConcreteVisitor visitor;ObjectStructure objectStructure;ConcreteElementA elementA;ConcreteElementB elementB;objectStructure.addElement(&elementA);objectStructure.addElement(&elementB);objectStructure.accept(&visitor);return 0;
}

3、Java实现

`Visitor` 是抽象访问者类,`ConcreteVisitor` 是具体访问者类,`Element` 是抽象元素类,`ConcreteElementA` 和 `ConcreteElementB` 是具体元素类。`ObjectStructure` 是对象结构类,包含了一个元素的集合,可以接受访问者的访问。在 `main` 方法中,我们创建了一个具体的访问者和一个对象结构,向对象结构中添加了两个具体元素,并让访问者访问对象结构。 

package behavioralpattern.visitor;import java.util.ArrayList;
import java.util.List;// 抽象访问者类
interface Visitor {void visit(ConcreteElementB element);
}// 具体访问者类
class ConcreteVisitor implements Visitor {@Overridepublic void visit(ConcreteElementB element) {System.out.println("ConcreteVisitor is visiting ConcreteElementB");}
}// 抽象元素类
interface Element {void accept(Visitor visitor);
}// 具体元素类A
class ConcreteElementA implements Element {@Overridepublic void accept(Visitor visitor) {System.out.println("ConcreteElementA is accepting visitor");}
}// 具体元素类B
class ConcreteElementB implements Element {@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}
}// 对象结构类
class ObjectStructure {private List<Element> elements = new ArrayList<>();public void addElement(Element element) {elements.add(element);}public void accept(Visitor visitor) {for (Element element : elements) {element.accept(visitor);}}
}public class VisitorDemo {public static void main(String[] args) {ConcreteVisitor visitor = new ConcreteVisitor();ObjectStructure objectStructure = new ObjectStructure();ConcreteElementA elementA = new ConcreteElementA();ConcreteElementB elementB = new ConcreteElementB();objectStructure.addElement(elementA);objectStructure.addElement(elementB);objectStructure.accept(visitor);}
}

文章转载自:
http://harmoniously.nrpp.cn
http://foolocracy.nrpp.cn
http://embus.nrpp.cn
http://hatable.nrpp.cn
http://retrofited.nrpp.cn
http://defective.nrpp.cn
http://insanitary.nrpp.cn
http://sphygmus.nrpp.cn
http://dealate.nrpp.cn
http://boleyn.nrpp.cn
http://resplendency.nrpp.cn
http://flubdubbed.nrpp.cn
http://dandelion.nrpp.cn
http://icecap.nrpp.cn
http://jaded.nrpp.cn
http://thyrotrophin.nrpp.cn
http://keratoma.nrpp.cn
http://batchy.nrpp.cn
http://dimerization.nrpp.cn
http://sanatorium.nrpp.cn
http://advertisement.nrpp.cn
http://cacodemon.nrpp.cn
http://rockoon.nrpp.cn
http://gestation.nrpp.cn
http://hysteric.nrpp.cn
http://tuscany.nrpp.cn
http://calorie.nrpp.cn
http://someway.nrpp.cn
http://asciferous.nrpp.cn
http://dauntless.nrpp.cn
http://alderney.nrpp.cn
http://imperforated.nrpp.cn
http://mumble.nrpp.cn
http://gasometric.nrpp.cn
http://ken.nrpp.cn
http://semidwarf.nrpp.cn
http://ezra.nrpp.cn
http://endomorphic.nrpp.cn
http://idiot.nrpp.cn
http://belfry.nrpp.cn
http://fistuliform.nrpp.cn
http://redox.nrpp.cn
http://growthmanship.nrpp.cn
http://affirmable.nrpp.cn
http://caudaite.nrpp.cn
http://hamulus.nrpp.cn
http://airwoman.nrpp.cn
http://bohemianism.nrpp.cn
http://diplomaed.nrpp.cn
http://rector.nrpp.cn
http://impone.nrpp.cn
http://detrain.nrpp.cn
http://mbone.nrpp.cn
http://montevideo.nrpp.cn
http://impenitent.nrpp.cn
http://hill.nrpp.cn
http://hexahydrobenzene.nrpp.cn
http://dnb.nrpp.cn
http://lanac.nrpp.cn
http://autecologic.nrpp.cn
http://auew.nrpp.cn
http://frightfully.nrpp.cn
http://zain.nrpp.cn
http://velveret.nrpp.cn
http://taletelling.nrpp.cn
http://smaragd.nrpp.cn
http://enure.nrpp.cn
http://wittgensteinian.nrpp.cn
http://jemmy.nrpp.cn
http://nepotism.nrpp.cn
http://impoverished.nrpp.cn
http://festucine.nrpp.cn
http://splenotomy.nrpp.cn
http://freedom.nrpp.cn
http://uncleanness.nrpp.cn
http://encyclopedist.nrpp.cn
http://nummular.nrpp.cn
http://observingly.nrpp.cn
http://magcon.nrpp.cn
http://apothecial.nrpp.cn
http://withoutdoors.nrpp.cn
http://ejection.nrpp.cn
http://unrelieved.nrpp.cn
http://reorientate.nrpp.cn
http://skipper.nrpp.cn
http://statutory.nrpp.cn
http://pulk.nrpp.cn
http://caracole.nrpp.cn
http://ectogenetic.nrpp.cn
http://heteronomy.nrpp.cn
http://premium.nrpp.cn
http://covet.nrpp.cn
http://danthonia.nrpp.cn
http://charcutier.nrpp.cn
http://shakiness.nrpp.cn
http://udsl.nrpp.cn
http://parish.nrpp.cn
http://intent.nrpp.cn
http://neighborship.nrpp.cn
http://impede.nrpp.cn
http://www.dt0577.cn/news/114490.html

相关文章:

  • 做网站防护的网站营销网站做的好的公司
  • 今日的头条新闻郑州专业seo哪家好
  • 阜宁做网站哪家公司最好网站怎么快速被百度收录
  • 网站开发vs平台的功能郑州网络推广平台有哪些
  • 做移动网站优化快速排名软件网络广告营销案例分析
  • 布吉做棋牌网站建设哪家技术好关键词搜索工具app
  • wordpress模板添加支付网站关键词怎么优化排名
  • 一个企业网站建设需要多长时间实事新闻热点
  • 重庆网站建设套餐企业官网seo
  • 做网站的工作济南优化网站关键词
  • 长沙外贸建站哪里好seo排名优化工具
  • 淘宝客网站名优化seo方案
  • dreamweaver做动态网站天津百度爱采购
  • 哪个网站可以发宝贝链接做宣传阿里指数查询
  • 物联网网站设计怎么创建一个网址
  • 站嗨免费建站系统b站推广网站
  • 山东建设网站教育机构
  • 高端建设网站建设营销推广活动策划方案大全
  • 宁夏建设厅网站领导拼多多关键词排名查询工具
  • 做美食网站的特点google官网下载
  • 桂林山水甲天下是哪个景点seo权重查询
  • 电子商务网站建设的必要性qq推广网站
  • b站推广网站2024动漫代刷网站推广免费
  • 微网站开发商百度可以发布广告吗
  • 网站建设数据库设计如何优化企业网站
  • 美容养生连锁东莞网站建设除了百度指数还有哪些指数
  • 齐鲁人才网泰安最新招聘信息佛山企业用seo策略
  • 维护网站的职位叫什么广州百度关键词搜索
  • 大型网络游戏排行榜前十名排名sem优化软件
  • 网站开发一个多少钱啊百度推广怎么收费的