访问者模式
定义
访问者模式(Visitor Pattern),使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。
实现
js
// 元素类
class Student {
constructor(name, chinese, math, english) {
this.name = name
this.chinese = chinese
this.math = math
this.english = english
}
accept(visitor) {
visitor.visit(this)
}
}
// 访问者类
class ChineseTeacher {
visit(student) {
console.log(`语文${student.chinese}`)
}
}
class MathTeacher {
visit(student) {
console.log(`数学${student.math}`)
}
}
class EnglishTeacher {
visit(student) {
console.log(`英语${student.english}`)
}
}
// 实例化元素类
const student = new Student('张三', 90, 80, 60)
// 实例化访问者类
const chineseTeacher = new ChineseTeacher()
const mathTeacher = new MathTeacher()
const englishTeacher = new EnglishTeacher()
// 接受访问
student.accept(chineseTeacher)
student.accept(mathTeacher)
student.accept(englishTeacher)