欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 设计者模式之访问者模式

设计者模式之访问者模式

2024/10/25 20:27:38 来源:https://blog.csdn.net/2301_76862031/article/details/141716629  浏览:    关键词:设计者模式之访问者模式

1.访问者模式概述

        允许你在不改变对象结构中的元素类的前提下,向对象结构中的元素增加新的行为。这种模式将数据结构与作用于结构上的操作分离,从而使得我们可以独立地改变数据结构和操作


2.访问者模式的组成部分

1)Visitor(访问者)

        定义了一个访问每个元素的接口,包含多个访问方法,每个方法对应一种具体的元素类型。


2)Element(元素)

        定义了一个接受(accept)操作,它以一个访问者为参数。


3)ConcreteElement(具体元素)

        实现了Element接口提供的accept操作。
        每个具体元素都实现了自己的业务逻辑。


4)ObjectStructure(对象结构)


        包含一个或多个元素对象。
        提供一个高层接口,允许访问者访问这些元素。

3.举个栗子

小久玩英雄联盟的时候,使用电脑自带触摸板控制角色移动特别不爽,于是买了一个鼠标,通过笔记本电脑的usb接口插入鼠标的插头,不通过笔记本自带的触摸板玩游戏,通过鼠标玩游戏(visitor),玩的特别舒服.

注:控制鼠标移动不是通过笔记本的触摸面板(ObjectStructure),而是通过外部的鼠标(visitor)进行移动.

流程

鼠标==>鼠标插头==》通过usb接口连接电脑===>访问控制电脑屏幕中的鼠标

4.代码实现

1)  USBPlug类

package org.xiji.visitor3;/*** USB插头*/
public interface USBPlug {/*** 定义电脑的UsePort*/public void acceptUsb(Computer usbPort);}

2)UsbPort类

package org.xiji.visitor3;/*** Usb接口 相当于元素接口*/
public interface UsbPort {/*** 接受UsbPlug插头*/public void acceptUsb(USBPlug usbPlug);
}

3)电脑类

package org.xiji.visitor3;public class Computer implements UsbPort{@Overridepublic void acceptUsb(USBPlug usbPlug) {usbPlug.acceptUsb(this);}public String moveMouse() {System.out.println("鼠标移动了");return "鼠标";}
}

4)鼠标类

package org.xiji.visitor3;/*** 电脑鼠标插入usb接口*/
public class Mouse implements USBPlug{@Overridepublic void acceptUsb(Computer usbPort) {System.out.println("鼠标插入usb接口");System.out.println("Mouse正在移动"+ usbPort.moveMouse());}
}

5)visitor测试类

package org.xiji.visitor3;public class Visitor3Main {public static void main(String[] args) {/*** 一台电脑*/Computer computer = new Computer();/*** 新买的鼠标*/Mouse mouse = new Mouse();/*** 鼠标插入到电脑,并且开始游戏*/computer.acceptUsb(mouse);}
}

6)运行结果

版权声明:

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

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