当前位置: 首页> 文旅> 文化 > 中国建筑招聘网官网_网站推广_国产长尾关键词拘挖掘_合肥网站外包

中国建筑招聘网官网_网站推广_国产长尾关键词拘挖掘_合肥网站外包

时间:2025/7/9 1:31:16来源:https://blog.csdn.net/weixin_74144099/article/details/142563023 浏览次数:0次
中国建筑招聘网官网_网站推广_国产长尾关键词拘挖掘_合肥网站外包

访问者模式

访问者(Visitor)模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。

在访问者模式中,每增加一个新的元素类,都要在每一个具体访问者类中增加相应的具体操作,这违背了“开闭原则”。

案例

设计一台电脑并提供硬件更新功能

硬件:

public abstract class Hardware {String commond;public Hardware(String commond){this.commond = commond;}public abstract void work();public abstract void acceptUpdate(Visitor visitor);
}
public class CPU extends Hardware{public CPU(String commond) {super(commond);}@Overridepublic void work() {System.out.println("cpu正在工作:"+commond);}@Overridepublic void acceptUpdate(Visitor visitor) {visitor.visitedCPU(this);}
}
public class Memery extends Hardware{public Memery(String commond) {super(commond);}@Overridepublic void work() {System.out.println("内存正在工作:"+commond);}@Overridepublic void acceptUpdate(Visitor visitor) {visitor.visitedMem(this);}
}
public class Disk extends Hardware{public Disk(String commond) {super(commond);}@Overridepublic void work() {System.out.println("磁盘正在工作:"+commond);}@Overridepublic void acceptUpdate(Visitor visitor) {visitor.visitedDisk(this);}
}

更新包:

public interface Visitor {void visitedCPU(CPU cpu);void visitedMem(Memery memery);void visitedDisk(Disk disk);
}
public class UpdatePackage implements Visitor{String update;public UpdatePackage(String update){this.update = update;}@Overridepublic void visitedCPU(CPU cpu) {cpu.commond = update;}@Overridepublic void visitedMem(Memery memery) {memery.commond = update;}@Overridepublic void visitedDisk(Disk disk) {disk.commond = update;}
}

电脑:

public class Computer {private CPU cpu;private Memery memery;private Disk disk;public Computer(CPU cpu, Disk disk, Memery memery) {this.cpu = cpu;this.disk = disk;this.memery = memery;}public void work(){cpu.work();memery.work();disk.work();}public void update(Visitor visitor){cpu.acceptUpdate(visitor);memery.acceptUpdate(visitor);disk.acceptUpdate(visitor);}
}

测试:

public class Main {public static void main(String[] args) {Computer computer = new Computer(new CPU("单机模式"),new Disk("单机模式"), new Memery("单机模式"));computer.work();System.out.println("============");computer.update(new UpdatePackage("联网模式"));computer.work();}
}
关键字:中国建筑招聘网官网_网站推广_国产长尾关键词拘挖掘_合肥网站外包

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: