访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
关键代码:在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。
// 接收者类,拥有accept方法
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.salary;
}
setSalary(salary) {
this.salary = salary;
}
// accept方法接收访问者对象,将自身引用传递给visitor
accept(visitor) {
visitor.visit(this);
}
}
// 访问者类,具有visit方法,在接收者的accpet方法被调用
class Visitor {
constructor(times) {
this.times = times;
}
visit(employee) {
employee.setSalary(employee.getSalary() * this.times);
}
}
const emp = new Employee("小明", 3000);
const dobule = new Visitor(2);
const triple = new Visitor(3);
emp.accept(dobule);
console.log(emp.getSalary()); //6000
emp.accept(triple);
console.log(emp.getSalary()); //18000