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

杭州有哪些做网站的公司微信小程序开发实战源代码

杭州有哪些做网站的公司,微信小程序开发实战源代码,jsp做网站毕业设计,代理商入口文章目录 一.什么是访问者模式#xff1f;二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图#xff1a; 访问者设计模式类图 一.什么是访问者模式#xff1f; 访问者模式#xff08;… 文章目录 一.什么是访问者模式二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图 访问者设计模式类图 一.什么是访问者模式 访问者模式Visitor Pattern是一种行为型设计模式允许在不更改元素类的情况下为对象结构中的元素增加新的操作。访问者模式通过将操作从元素类中抽离出来实现操作的扩展。  在访问者模式中核心思想是将数据结构和操作分开数据结构负责提供必要的接口而具体的操作逻辑由访问者实现。 二.访问者模式的结构 Visitor访问者接口声明一组访问方法每个方法对应一种具体的元素类型。ConcreteVisitor具体访问者实现访问者接口中声明的操作对不同的元素提供不同的处理。Element元素接口定义一个Accept方法用于接收访问者对象。ConcreteElement具体元素实现元素接口并在Accept方法中调用访问者的相应方法。ObjectStructure对象结构提供元素的容器负责存储和遍历元素。 三.访问者模式的应用场景 数据结构稳定操作逻辑需要频繁变化例如编译器中的语法树遍历。需要对一组不相关的类执行操作如不同形状的图形对象圆形、矩形等。需要集中管理行为而不想污染元素类。 四.访问者模式的优缺点 优点 增加新的操作很方便只需新增一个具体访问者类。遵循单一职责原则将操作与元素本身解耦。 缺点 增加新的元素类型需要修改所有访问者违背了开闭原则。对象结构不容易扩展。 五.访问者模式的C实现 #include iostream #include vector #include memory// 前置声明避免循环引用 class ConcreteElementA; class ConcreteElementB; class Visitor;// 访问者接口Visitor class Visitor { public:virtual void visitConcreteElementA(ConcreteElementA element) 0;virtual void visitConcreteElementB(ConcreteElementB element) 0;virtual ~Visitor() default; };// 元素接口Element class Element { public:virtual void accept(std::shared_ptrVisitor visitor) 0;virtual ~Element() default; };// 具体元素 AConcreteElementA class ConcreteElementA : public Element { public:void accept(std::shared_ptrVisitor visitor) override {visitor-visitConcreteElementA(*this);}void operationA() {std::cout ConcreteElementA specific operation.\n;} };// 具体元素 BConcreteElementB class ConcreteElementB : public Element { public:void accept(std::shared_ptrVisitor visitor) override {visitor-visitConcreteElementB(*this);}void operationB() {std::cout ConcreteElementB specific operation.\n;} };// 具体访问者 1ConcreteVisitor1 class ConcreteVisitor1 : public Visitor { public:void visitConcreteElementA(ConcreteElementA element) override {std::cout ConcreteVisitor1 visiting ConcreteElementA.\n;element.operationA();}void visitConcreteElementB(ConcreteElementB element) override {std::cout ConcreteVisitor1 visiting ConcreteElementB.\n;element.operationB();} };// 具体访问者 2ConcreteVisitor2 class ConcreteVisitor2 : public Visitor { public:void visitConcreteElementA(ConcreteElementA element) override {std::cout ConcreteVisitor2 visiting ConcreteElementA.\n;element.operationA();}void visitConcreteElementB(ConcreteElementB element) override {std::cout ConcreteVisitor2 visiting ConcreteElementB.\n;element.operationB();} };// 对象结构ObjectStructure class ObjectStructure { private:std::vectorstd::shared_ptrElement elements;public:void addElement(std::shared_ptrElement element) {elements.push_back(element);}void accept(std::shared_ptrVisitor visitor) {for (auto element : elements) {element-accept(visitor);}} };// 测试代码 int main() {// 创建对象结构ObjectStructure objectStructure;// 添加元素objectStructure.addElement(std::make_sharedConcreteElementA());objectStructure.addElement(std::make_sharedConcreteElementB());// 创建访问者 1 并访问std::shared_ptrVisitor visitor1 std::make_sharedConcreteVisitor1();std::cout Using ConcreteVisitor1:\n;objectStructure.accept(visitor1);// 创建访问者 2 并访问std::shared_ptrVisitor visitor2 std::make_sharedConcreteVisitor2();std::cout \nUsing ConcreteVisitor2:\n;objectStructure.accept(visitor2);return 0; }六.访问者模式的JAVA实现 // 抽象访问者 interface Visitor {void VisitConcreteElementA(ConcreteElementA elementA);void VisitConcreteElementB(ConcreteElementB elementB); }// 具体访问者1 class ConcreteVisitor1 implements Visitor {Overridepublic void VisitConcreteElementA(ConcreteElementA elementA) {System.out.println(ConcreteVisitor1 visiting ConcreteElementA);}Overridepublic void VisitConcreteElementB(ConcreteElementB elementB) {System.out.println(ConcreteVisitor1 visiting ConcreteElementB);} }// 具体访问者2 class ConcreteVisitor2 implements Visitor {Overridepublic void VisitConcreteElementA(ConcreteElementA elementA) {System.out.println(ConcreteVisitor2 visiting ConcreteElementA);}Overridepublic void VisitConcreteElementB(ConcreteElementB elementB) {System.out.println(ConcreteVisitor2 visiting ConcreteElementB);} }// 抽象元素 abstract class Element {public abstract void Accept(Visitor visitor); }// 具体元素A class ConcreteElementA extends Element {Overridepublic void Accept(Visitor visitor) {visitor.VisitConcreteElementA(this);}public void OperationA() {System.out.println(ConcreteElementA specific operation.);} }// 具体元素B class ConcreteElementB extends Element {Overridepublic void Accept(Visitor visitor) {visitor.VisitConcreteElementB(this);}public void OperationB() {System.out.println(ConcreteElementB specific operation.);} }// 对象结构 class ObjectStructure {private final ListElement elements new ArrayList();public void Add(Element element) {elements.add(element);}public void Accept(Visitor visitor) {for (Element element : elements) {element.Accept(visitor);}} }// 客户端代码 public class VisitorPatternDemo {public static void main(String[] args) {// 创建对象结构ObjectStructure structure new ObjectStructure();// 添加具体元素structure.Add(new ConcreteElementA());structure.Add(new ConcreteElementB());// 创建并使用访问者1ConcreteVisitor1 visitor1 new ConcreteVisitor1();structure.Accept(visitor1);// 创建并使用访问者2ConcreteVisitor2 visitor2 new ConcreteVisitor2();structure.Accept(visitor2);} }七.代码解释 Element 接口和 ConcreteElement Element接口定义了一个accept方法具体元素类需要实现该方法并在其中调用访问者的相应方法。 Visitor 接口和 ConcreteVisitor Visitor接口声明了针对每种具体元素的访问方法。ConcreteVisitor1和ConcreteVisitor2实现了Visitor接口并定义了对ConcreteElementA和ConcreteElementB的具体操作。 ObjectStructure 类 ObjectStructure维护了一个元素集合并提供accept方法用于将访问者传递给集合中的每个元素。 测试代码 创建了一个对象结构并添加了两种具体元素。使用两个不同的访问者访问元素集合展示了访问者模式的扩展性。 八.总结 访问者模式是一种将操作和数据结构分离的强大工具。当需要频繁添加新的操作或行为时它提供了扩展性良好的解决方案。通过访问者模式可以大幅简化复杂操作的管理提升代码的可读性和维护性。
http://www.w-s-a.com/news/842054/

相关文章:

  • 网站代理打开个人网站设计源码
  • 做php网站的话要学什么语言wordpress搜索不到
  • 金华官方网站建设网络营销策划模板
  • 网站开发到上线在线生成小程序
  • 动易网站设计方案郑州营销网站建设
  • 怎么上网站做简易注销的步骤郑州大学现代远程教育《网页设计与网站建设》课程考核要求
  • 新乡网站建设新乡长沙本地论坛有哪些
  • 潍坊中企动力做的网站怎么样wordpress接入微博
  • 网站开发者所有权归属网站项目建设的必要性
  • 菜鸟网站编程广州网站设计权威乐云践新
  • 网站做接口到app 价格大地资源免费视频观看
  • 怎么给钓鱼网站做防红网站建设相关的
  • 教育培训的网站建设湖南网站建设小公司
  • 福建南平网站建设创意交易平台网
  • 做直播网站要哪些技术内容营销理论
  • 价格划算的网站开发怎么找有赞做网站
  • 做网站店铺图片用什么软件网络营销方案格式
  • 做外贸要自己建网站吗有效的网络营销方式
  • 精通网站开发书籍做网站获取手机号码
  • 论坛做视频网站有哪些济南新站seo外包
  • 哪类型网站容易做冷水滩做微网站
  • 搭建企业网站流程保定徐水网站建设
  • 建设单位到江川区住房和城乡建设局网站伦敦 wordpress 设计
  • 响应式网站的服务麦德龙网站建设目标
  • 做国外单的网站叫什么海南省海口市网站建设
  • 杭州响应式网站案例wordpress5.2.2
  • 网站建设运营维护合同wordpress资源搜索插件
  • 国外网站流量查询东莞网站建设教程
  • 餐饮类网站建设达到的作用东莞工程建设交易中心网
  • 网站设计 知识产权湖北网站建设xiduyun