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

演示网站怎么做wordpress 表格 文章列表

演示网站怎么做,wordpress 表格 文章列表,基于html5的电商网站开发,wordpress 区块链模板访问者(Visitor)模式属于行为型模式的一种。 访问者模式主要用于分离算法和对象结构,从而在不修改原有对象的情况下扩展新的操作。它适用于数据结构相对稳定,而操作(行为)容易变化的场景。 访问者模式允许…

访问者(Visitor)模式属于行为型模式的一种。

访问者模式主要用于分离算法和对象结构,从而在不修改原有对象的情况下扩展新的操作。它适用于数据结构相对稳定,而操作(行为)容易变化的场景。

访问者模式允许在不修改现有类的情况下,为类层次结构中的对象定义新的操作

访问者模式通过将操作封装到一个独立的类(即访问者)中,使得对象结构与操作解耦。

访问者模式使用了一种名为双分派(在运行时根据两个对象的类型动态选择方法)的技巧。

Java标准库中的 FileVisitor,就是使用的访问者模式。访问者模式的设计比较复杂。

访问者模式适用于以下场景:

  • 数据结构相对稳定,但操作易变的系统(例如编译器、代码分析器)。
  • 需要对对象结构进行不同操作,并且这些操作相对独立,例如报表生成、统计、数据转换。

访问者模式通常有以下组成部分:

  • Visitor(访问者):定义一个访问接口,为不同类型的元素提供不同的访问方法。
  • ConcreteVisitor(具体访问者):访问者的具体实现,具体执行操作。
  • Element(元素接口):定义一个 accept(Visitor v) 方法,允许 Visitor 访问自身。
  • ConcreteElement(具体元素):具体的对象结构,实现 Element 接口,并在 accept(Visitor v) 方法中进行调用。
  • ObjectStructure(对象结构,通常是元素的集合):维护一组 Element 对象,并提供 accept(Visitor v) 方法,让访问者访问所有的元素。

我们模拟一下访问者模式的实现。

1、定义访问者接口

// 访问者接口
interface Visitor {void visit(ConcreteElementA elementA);void visit(ConcreteElementB elementB);
}

2、定义具体访问者

// 具体访问者1
class ConcreteVisitor1 implements Visitor {@Overridepublic void visit(ConcreteElementA elementA) {System.out.println("Visitor1 访问 " + elementA.getName());}@Overridepublic void visit(ConcreteElementB elementB) {System.out.println("Visitor1 访问 " + elementB.getName());}
}// 具体访问者2
class ConcreteVisitor2 implements Visitor {@Overridepublic void visit(ConcreteElementA elementA) {System.out.println("Visitor2 访问 " + elementA.getName());}@Overridepublic void visit(ConcreteElementB elementB) {System.out.println("Visitor2 访问 " + elementB.getName());}
}

3、定义元素接口

// 元素接口
interface Element {void accept(Visitor visitor);
}

4、定义具体元素

// 具体元素 A
class ConcreteElementA implements Element {private String name = "ElementA";@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public String getName() {return name;}
}// 具体元素 B
class ConcreteElementB implements Element {private String name = "ElementB";@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public String getName() {return name;}
}

5、定义对象结构

// 对象结构,包含多个元素
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);}}
}

6、测试访问者模式

public class VisitorPatternDemo {public static void main(String[] args) {ObjectStructure structure = new ObjectStructure();// 添加元素structure.addElement(new ConcreteElementA());structure.addElement(new ConcreteElementB());// 使用不同的访问者访问元素Visitor visitor1 = new ConcreteVisitor1();Visitor visitor2 = new ConcreteVisitor2();System.out.println("使用 Visitor1 访问:");structure.accept(visitor1);System.out.println("\n使用 Visitor2 访问:");structure.accept(visitor2);}
}

访问者模式的优缺点

优点:

  • 遵循开闭原则(OCP):可以在不修改元素类的情况下,为其添加新的操作。
  • 将数据结构与行为分离:对象结构负责管理元素,而行为由访问者独立实现,增强了灵活性。
  • 适用于复杂对象结构:当对象结构中包含不同类型的元素时,访问者模式可以统一管理操作逻辑。

缺点:

  • 代码复杂度增加:对于简单对象结构,使用访问者模式可能会增加不必要的复杂性。
  • 每次在元素层次结构中添加或移除一个类时,都要更新所有的访问者。

我们可以将访问者模式视为命令模式的加强版本,其对象可对不同类的多种对象执行操作。

至此23种设计模式暂告一个段落了。我们将开启下个篇章。

只有读不完的书,哪有不会走的人。-- 烟沙九洲

http://www.dtcms.com/a/452314.html

相关文章:

  • 湘潭网站建设 皆来磐石网络wordpress引用轮播图文件
  • 交易类网站建设功能表seo实战密码在线阅读
  • 网站建设代码流程南通市交通建设处网站
  • 罗湖网站建烟台环保网站建设
  • 如何制作网站建设胶南网站建设价格
  • 绿色的医疗资讯手机网站wap模板html源码下载怎么在四川建设厅网站上进行劳务合同备案
  • 网站开发加盟商怎么做杭州网站设计 site
  • 外贸公司有必要建设网站吗外贸人才网属于什么电子商务模式
  • 温州市建设工程招投标网站培训课程总结
  • iis7添加网站网站策划书模板
  • 上海网站建设yes404猫咪社区免费资源在线观看
  • 珠海工商年检到哪个网站做论文中参考文献对不上
  • 数据网站建设工具模板东莞普工招聘最新招聘信息
  • 微信分享网站显示图片郑州百度快照优化排名
  • 东莞公司网站怎么做东莞市建设质量监督站
  • 惠州网站建设 英语6怎样弄免费网站
  • 网站不能访问如何做冗余怎么做单位网站
  • 沈阳市建设工程信息seo教程技术资源
  • 工作室 网站长沙网络推广代理
  • 重庆铜梁网站建设费用网站建设布为网
  • 网站没有关键词库想做一个网站
  • 厦门做网站找谁自动点击器安卓
  • 国际交流网站建设方案营销类型的公司网站
  • 网站设计哪家公司好丽水建设局网站
  • 做qq空间动态皮肤网站抖音怎么挂小程序赚钱
  • 无锡营销型网站建站软件开发学习
  • 丰联汽配网站建设成本安阳网红打卡地
  • wordpress 信息网站网页制作软件s
  • 长沙网站制作平台网站中图片加水印
  • 昆明怎样优化网站工商局外网