当前位置: 首页> 房产> 建筑 > Java设计模式 _行为型模式_访问者模式

Java设计模式 _行为型模式_访问者模式

时间:2025/7/9 23:19:04来源:https://blog.csdn.net/qq_34207422/article/details/139325864 浏览次数:0次

一、访问者模式

1、访问者模式
访问者模式(Visitor Pattern)是一种行为型模式。它允许在不修改已有类结构的情况下,向类中添加新的操作。访问者模式通过将操作封装在一个访问者对象中,使得可以在不改变各个元素类的前提下,实现对元素的新操作。

2、实现思路
被访问者(元素对象),访问者;
被访问者需要关联到访问者;访问者实现被访问者的方法;
(1)、定义被访问者规范(绑定到访问者中,和其他自身行为)(水果)
(2)、编写被访问者实现类,实现绑定和规范行为(苹果,葡萄)
(3)、编写访问者规范(每一种被访问者的访问方法)(商店)
(4)、编写访问者的实现类,实现访问的具体方法(水果商店)
(5)、实例化被访问者,实例化访问者,被访问者绑定到访问者中

二、代码示例

1、示例场景
水果商店添加水果,添加新的水果,不用修改之前的水果信息和绑定信息
2、代码示例

// 1、定义被访问者规范(水果)
public interface Fruit {void accept(Shop shop);     // 定义绑定关系void info();
}
// 2.1、定义被访问者实现类(苹果)
public class Apple implements Fruit {@Overridepublic void accept(Shop shop) {shop.visit(this);   // 实现访问者绑定被访问者}@Overridepublic void info() {System.out.println("苹果");}
}
// 2.2、定义被访问者实现类(葡萄)
public class Garpe implements Fruit {@Overridepublic void accept(Shop shop) {shop.visit(this);  // 实现访问者绑定被访问者}@Overridepublic void info() {System.out.println("葡萄");}
}
// 3、编写访问者规范
public interface Shop {void visit(Garpe garpe);   // 通过绑定访问被访问者葡萄void visit(Apple apple);  // 通过绑定访问被访问者苹果
}
// 4、编写访问者实现类,水果商店
public class FruitShop implements Shop {@Overridepublic void visit(Garpe garpe) {System.out.println("添加了新水果!" );garpe.info();}@Overridepublic void visit(Apple apple) {System.out.println("添加了新水果!" );apple.info();}
}// 5、测试public static void main(String[] args) {Fruit apple = new Apple();   // 被观察者Garpe garpe = new Garpe();Shop shop = new FruitShop();   // 观察者apple.accept(shop);    // 被观察者被观察者观察garpe.accept(shop);}

在这里插入图片描述

总结:
访问者模式,主要包含访问者和被访问者两种角色的实体,两者之间相互关联,被访问者依附于访问者,访问者可以访问被访问者的方法。

学海无涯苦作舟!!!

关键字:Java设计模式 _行为型模式_访问者模式

版权声明:

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

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

责任编辑: