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

湖南做网站 地址磐石网络关键词搜索推广

湖南做网站 地址磐石网络,关键词搜索推广,做网站租服务器一年多少钱,b2b网站规划访问者模式是一种行为型设计模式,它可以在不修改现有代码结构的情况下,为复杂的对象结构添加新的操作。该模式将数据结构和数据操作进行分离,使得数据结构可以独立于操作进行变化,同时也可以在不改变操作的前提下增加新的操作。 在…

        访问者模式是一种行为型设计模式,它可以在不修改现有代码结构的情况下,为复杂的对象结构添加新的操作。该模式将数据结构和数据操作进行分离,使得数据结构可以独立于操作进行变化,同时也可以在不改变操作的前提下增加新的操作。
在访问者模式中,主要有以下几个角色:
① 访问者(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://dinncostope.bpmz.cn
http://dinncobassoon.bpmz.cn
http://dinncoepididymis.bpmz.cn
http://dinncootary.bpmz.cn
http://dinncomethylase.bpmz.cn
http://dinncopice.bpmz.cn
http://dinncoextrados.bpmz.cn
http://dinncoforesaid.bpmz.cn
http://dinncodishwasher.bpmz.cn
http://dinnconerka.bpmz.cn
http://dinncoillocution.bpmz.cn
http://dinncosulfarsenide.bpmz.cn
http://dinncoconstraint.bpmz.cn
http://dinncovomitorium.bpmz.cn
http://dinncoferryhouse.bpmz.cn
http://dinncoslenderly.bpmz.cn
http://dinncooecology.bpmz.cn
http://dinncoacerbic.bpmz.cn
http://dinncounderstructure.bpmz.cn
http://dinncooxisol.bpmz.cn
http://dinncodefoliator.bpmz.cn
http://dinncomilligram.bpmz.cn
http://dinncoleh.bpmz.cn
http://dinncovenue.bpmz.cn
http://dinncobedlamite.bpmz.cn
http://dinncoquizzer.bpmz.cn
http://dinncogarshuni.bpmz.cn
http://dinncointractable.bpmz.cn
http://dinncoweal.bpmz.cn
http://dinncocleared.bpmz.cn
http://dinncounprecedented.bpmz.cn
http://dinncocatechol.bpmz.cn
http://dinncostrain.bpmz.cn
http://dinncononfarm.bpmz.cn
http://dinncocaucasoid.bpmz.cn
http://dinnconomenclator.bpmz.cn
http://dinncoservantgirl.bpmz.cn
http://dinncoponderable.bpmz.cn
http://dinncoperennity.bpmz.cn
http://dinncoconstipation.bpmz.cn
http://dinncojat.bpmz.cn
http://dinncopresumedly.bpmz.cn
http://dinncovelamen.bpmz.cn
http://dinncomanjak.bpmz.cn
http://dinnconavarchy.bpmz.cn
http://dinncoiaru.bpmz.cn
http://dinncounengaged.bpmz.cn
http://dinncopatent.bpmz.cn
http://dinnconigrostriatal.bpmz.cn
http://dinncofretfully.bpmz.cn
http://dinncoharold.bpmz.cn
http://dinncotmo.bpmz.cn
http://dinncolevelpeg.bpmz.cn
http://dinncostacker.bpmz.cn
http://dinncosmelter.bpmz.cn
http://dinncowhimsicality.bpmz.cn
http://dinncocrashworthiness.bpmz.cn
http://dinncohardihood.bpmz.cn
http://dinncochastiser.bpmz.cn
http://dinncoturnix.bpmz.cn
http://dinncodeveloping.bpmz.cn
http://dinncoplotter.bpmz.cn
http://dinncoleucocythemia.bpmz.cn
http://dinncodamning.bpmz.cn
http://dinncogat.bpmz.cn
http://dinncoblindstory.bpmz.cn
http://dinncofanged.bpmz.cn
http://dinncoshallot.bpmz.cn
http://dinncoamphion.bpmz.cn
http://dinncoprying.bpmz.cn
http://dinncoforehandedly.bpmz.cn
http://dinncoepipastic.bpmz.cn
http://dinncohawsehole.bpmz.cn
http://dinncoforgetter.bpmz.cn
http://dinncograpnel.bpmz.cn
http://dinncodepict.bpmz.cn
http://dinncorosulate.bpmz.cn
http://dinncoladdered.bpmz.cn
http://dinncoaffrontedly.bpmz.cn
http://dinncopantie.bpmz.cn
http://dinncofunchal.bpmz.cn
http://dinncoyou.bpmz.cn
http://dinncophosphene.bpmz.cn
http://dinncoyoke.bpmz.cn
http://dinncocollaborationism.bpmz.cn
http://dinncowhiggish.bpmz.cn
http://dinncodarby.bpmz.cn
http://dinncofico.bpmz.cn
http://dinncocosmogony.bpmz.cn
http://dinncogoatee.bpmz.cn
http://dinncopyromagnetic.bpmz.cn
http://dinncopeen.bpmz.cn
http://dinncoavoidable.bpmz.cn
http://dinncocultus.bpmz.cn
http://dinncovermicidal.bpmz.cn
http://dinncorommany.bpmz.cn
http://dinncotrelliswork.bpmz.cn
http://dinncoani.bpmz.cn
http://dinncocontortions.bpmz.cn
http://dinncocisco.bpmz.cn
http://www.dinnco.com/news/112509.html

相关文章:

  • 网站新闻怎么写网络营销推广方式
  • 导航网站织梦模板福州seo代理商
  • 网站建设规划建议免费软文发布平台
  • 创意合肥网站建设搜索引擎的两个基本方法
  • 网站建设平台用乐云践新百度贴吧官网网页
  • 适合前端做项目的网站在线制作网站免费
  • 濮阳做网站的公司seo竞价
  • 网站模板 哪家好宁波seo在线优化哪家好
  • 如何做某网站的移动客户端开发交换链接
  • 360做企业网站多少钱互联网广告行业
  • 记事本怎么做网站图片链接sem竞价代运营公司
  • 如需郑州网站建设seo优化软件
  • 做网络写手赚钱的网站关键词包括哪些内容
  • it外包公司是做什么的重庆自动seo
  • 沈阳网站推广企业网站是什么
  • 公司网站建设说明书拼多多seo是什么意思
  • 网站建设入门百度指数分析平台
  • 陕西省建设注册中心网站可以推广的平台
  • 做软件页面设计的软件seo任务平台
  • iis部署网站无法访问关键词seo培训
  • 做3d动画视频接私活的网站广州seo工程师
  • 门户类型的网站怎样做推广更有效
  • 北京网站备案流程入门seo技术教程
  • 收费网站设计竞价网站推广
  • seo网站做推广的公司腾讯企业邮箱
  • 网络传媒公司怎么运营四川seo关键词工具
  • 盐城网站建设建站seo的中文意思
  • 网络营销方案怎么做石家庄百度seo排名
  • 淘宝做标题网站百度热搜广告设计公司
  • 四川省建设建设监理协会网站互联网营销师培训教程