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

怎么做盗版电影网站吗淘宝关键词排名

怎么做盗版电影网站吗,淘宝关键词排名,人是用什么做的视频网站,建设项目咨询公司网站访问者模式(Visitor Pattern)是行为设计模式的一种,它使你能够在不修改对象结构的情况下,给对象结构中的每个元素添加新的功能。访问者模式将数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化。 核心概…

        访问者模式(Visitor Pattern)是行为设计模式的一种,它使你能够在不修改对象结构的情况下,给对象结构中的每个元素添加新的功能。访问者模式将数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化。

核心概念

  • Element(元素接口/抽象类):定义一个接受访问者访问的接口或抽象类,元素可以是抽象类也可以是接口,通常会有一个accept()方法用于接收访问者对象的访问。

  • ConcreteElement(具体元素类):实现了Element接口或继承了Element抽象类的具体类,每个具体元素都实现了accept()方法,用于调用访问者相应的方法。

  • Visitor(访问者接口):声明了一个或多个访问元素的方法,使得每个元素都能接受访问者的操作。这些方法的名称通常反映了访问者对元素的操作。

  • ConcreteVisitor(具体访问者类):实现了Visitor接口,为每一种ConcreteElement提供具体的操作实现。

应用场景

  • 当需要对一个对象结构中的对象施加多种不同的操作,而这些操作彼此独立,且需要避免让这些操作"污染"这些对象的类时。
  • 对象结构比较稳定,但经常需要在此结构上定义新的操作。

优缺点

        优点:

  • 扩展性好:可以在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。
  • 符合单一职责原则:将数据结构和数据操作分离,使得两者可以独立变化。

        缺点:

  • 访问者模式使得对象结构变得复杂,增加新的元素类或访问者类都需要修改原有代码,违反了开闭原则。
  • 过多的ConcreteVisitor可能会导致类膨胀,系统难于维护。

        以下是使用Java实现访问者模式的一个完整示例。在这个例子中,我们假设有一个简单的文件系统结构,由文件(File)和目录(Directory)组成。我们的目标是实现两种不同的访问者:一个用于计算文件系统的总大小,另一个用于打印文件系统的内容结构。

1. 定义元素接口(Element)

首先,定义一个表示文件系统元素的接口,它包含一个接受访问者的方法。

// 文件系统元素接口
interface FileSystemElement {void accept(FileSystemVisitor visitor);
}

2. 具体元素类(ConcreteElement)

然后,定义具体的文件和目录类,它们都实现了FileSystemElement接口。

// 文件类
class File implements FileSystemElement {private String name;private int size;public File(String name, int size) {this.name = name;this.size = size;}public String getName() {return name;}public int getSize() {return size;}@Overridepublic void accept(FileSystemVisitor visitor) {visitor.visit(this);}
}// 目录类
class Directory implements FileSystemElement {private String name;private List<FileSystemElement> elements = new ArrayList<>();public Directory(String name) {this.name = name;}public void add(FileSystemElement element) {elements.add(element);}public String getName() {return name;}@Overridepublic void accept(FileSystemVisitor visitor) {visitor.visit(this);}public List<FileSystemElement> getElements() {return elements;}
}

3. 访问者接口(Visitor)

定义访问者接口,包含访问文件和目录的方法。

// 访问者接口
interface FileSystemVisitor {void visit(File file);void visit(Directory directory);
}

4. 具体访问者类(ConcreteVisitor)

创建两个访问者类,一个用于计算总大小,一个用于打印结构。

// 计算大小的访问者
class SizeCalculatorVisitor implements FileSystemVisitor {private int totalSize = 0;@Overridepublic void visit(File file) {totalSize += file.getSize();}@Overridepublic void visit(Directory directory) {for (FileSystemElement element : directory.getElements()) {element.accept(this);}}public int getTotalSize() {return totalSize;}
}// 打印结构的访问者
class StructurePrinterVisitor implements FileSystemVisitor {private String prefix = "";@Overridepublic void visit(File file) {System.out.println(prefix + "- " + file.getName() + " (" + file.getSize() + " KB)");}@Overridepublic void visit(Directory directory) {System.out.println(prefix + "+ " + directory.getName());prefix += "  ";for (FileSystemElement element : directory.getElements()) {element.accept(this);}prefix = prefix.substring(2);}
}

5. 客户端代码

最后,客户端代码创建文件系统结构并使用访问者。

public class VisitorPatternDemo {public static void main(String[] args) {Directory rootDir = new Directory("root");Directory subDir = new Directory("subdir");File file1 = new File("file1.txt", 100);File file2 = new File("file2.txt", 200);rootDir.add(file1);rootDir.add(subDir);subDir.add(file2);// 使用大小计算器访问者FileSystemVisitor sizeCalculator = new SizeCalculatorVisitor();rootDir.accept(sizeCalculator);System.out.println("Total size: " + sizeCalculator.getTotalSize() + " KB");// 使用结构打印访问者System.out.println("\nPrinting structure:");FileSystemVisitor structurePrinter = new StructurePrinterVisitor();rootDir.accept(structurePrinter);}
}

        这个例子展示了如何使用访问者模式来添加新的操作(计算大小和打印结构),而不需要修改文件和目录的类。新增操作时,只需添加新的访问者类即可。

http://www.tj-hxxt.cn/news/54729.html

相关文章:

  • 琼海做网站口碑市场调研报告怎么写范文
  • 免费html网站模板企业微信scrm
  • 餐饮网站 设计软件怎么推广
  • 网站样式下载郑州做网络营销渠道
  • 网站后台模板psd平原县网站seo优化排名
  • 详细描述建设一个网站的具体步骤电商seo优化
  • 怎样做才能让百度前两页有自己网站内容网销怎么做才能做好
  • 美橙网站建设怎么做怎样做推广
  • 做再生资源的网站有哪些厦门seo推广
  • 建立公司需要多少资金海淀区seo多少钱
  • asp网站如何做伪静态seo推广技术培训
  • 什么网站做外贸最多的怎样免费制作网页
  • 怎么让网站被搜索到厦门关键词排名提升
  • 贵州省贵州省建设厅网站网页开发工具
  • 东莞公司网站制作公司公司网络推广网站
  • seo排名优化工具网站优化推广的方法
  • 青岛网站建设公司怎么样市场推广和销售的区别
  • 中国制造网网站女生做sem还是seo
  • 独立网站建设流程昆山网站制作哪家好
  • 网站咨询弹窗是怎么做的seo关键词优化公司
  • 课外辅导东莞网站建设技术支持百度网站怎么申请注册
  • 备案需要网站吗直播回放老卡怎么回事
  • wordpress 电台网站优化是什么梗
  • 网站添加属性网络营销工具和方法
  • 徐州模板网站托管平台跨界营销案例
  • 给别人做网站要问什么问题网络营销推广工具
  • b站推广网站2024年不用下载杭州百度seo优化
  • 视频网站做app还是h5珠海seo推广
  • 东莞做营销型网站线上培训机构
  • 公司创建网站要多少钱seo文章推广