访客模式使用场景有些对象结构比较固定。但是,通常需要对此对象执行自定义操作。这时候我们可以使用访问模式。那些具有固定结构的对象称为受访者,他们接受访问者的访问并将自己作为参数传递给访问者。使用固定对象执行相关操作的类称为访问者。上面的调用之后,获取了受访者对象的引用,所以可以对其进行操作优缺点优点和缺点优点:将更改的访问与实际对象结构分开缺点:访问者和受访者相互依赖一个demo一台电脑与鼠标、键盘、显示器组成,这些组件是访问者ComputerPartDisplayVisitor可以访问访问者这部分的统一抽象接口计算机公共类键盘实现ComputerPart{@Overridepublicvoidaccept(ComputerPartVisitorcomputerPartVisitor){computerPartVisitor.visit(this);}}一个具体的visitor实现:computerpublicclassMonitor的monitor部分implementsComputerPart{@Overridepublicvoidaccept(ComputerPartVisitorVisitorVisitor){computerPartVisitor.visit(this);}}定义访问者可以访问哪些计算机部分接口:publicinterfaceComputerPartVisitor{publicvoidvisit(Keyboardkeyboard);publicvoidvisit(Monitormonitor);}根据以上接口定义具体访问Behavior:publicclassComputerPartDisplayVisitorimplementsComputerPartVisitor{@Overridepublicvoidvisit(Keyboardkeyboard){System.out.println("显示键盘。");}@Overridepublicvoidvisit(Monitormonitor){System.out.println("DisplayingMonitor.");}}给访问者一个特定的计算机组件computer.accept(newComputerPartDisplayVisitor());}}另一个demo在JSqlParser的源码中,一条SQL由多个部分组成,比如where条件部分和排序部分的个性化访问,同样使用访问者模式参考https://www.runoob.com/design...欢迎关注我个人的公众号《西北偏西北UP》,记录代码生活,行业思考,技术点评
