1、简述
访问者模式(Visitor Pattern)是一种行为型设计模式,允许你将操作分离到不同的对象中,而无需修改对象本身的结构。这种模式特别适合复杂对象结构中对其元素进行操作的场景。
本文将介绍访问者模式的核心概念、优缺点,并通过详细代码示例展示如何在实际应用中实现访问者模式。
设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git
2、什么是访问者模式?
访问者模式的核心思想是:
- 将数据结构和操作分离:操作以访问者对象的形式定义,而不是嵌入在被操作的类中。
- 扩展性强:当需要添加新的操作时,只需创建新的访问者类,而无需修改原有数据结构。
访问者模式由以下几个核心角色组成:
- 访问者接口(Visitor):声明对元素进行操作的方法。
- 具体访问者(Concrete Visitor):实现访问者接口,定义具体的操作。
- 元素接口(Element):定义接受访问者的方法(
accept
)。 - 具体元素(Concrete Element):实现元素接口,提供具体的数据结构。
- 对象结构(Object Structure):维护一组元素,并允许访问者访问这些元素。
3、实际案例
假设我们有一个公司的人员管理系统,需要对不同员工的薪资进行调整。不同类型的员工有不同的调整规则。我们可以使用访问者模式实现这一功能。
import java.util.ArrayList;
import java.util.List;
// 访问者接口
public interface Visitor {
void visit(Manager manager);
void visit(Developer developer);
}
// 具体访问者:薪资调整
public class SalaryAdjustmentVisitor implements Visitor {
@Override
public void visit(Manager manager) {
System.out.println("Adjusting salary for Manager: " + manager.getName());
manager.setSalary(manager.getSalary() * 1.10);
}