Skip to main content

访问者模式

访问者表示对数据的访问和处理。 访问者模式和策略模式有些像,都是强调数据本身与数据的处理逻辑相分离。 但是访问者模式通常适用于对数据做出比较复杂的处理。

访问者比策略更复杂

可以把访问者看作对数据的视图,或者 PhotoShop 的蒙板。 圆形的蒙板展示的数据是圆形,方形的蒙板展示的数据则是方形。

class Data {
}


// 访问者
class Visitor {
private data;
// 构造函数
Visitor(data) {
this.data = data;
}
report() {// ... 处理数据
}
}

比如对于同一份字节数据,可以解析成不同的结果:

//
class ByteBuffer {
private bytedata;
}

// 将 bytes 解析成 uint8 类型
class Uint8View {
private ByteBuffer buffer;
}

// 将 bytes 解析成 int16 类型
class Int16View {
private ByteBuffer buffer;
}