很长时间一直对observer(观察者)与visitor(访问者)有些分不清晰。
今天有时间进行一下梳理:
1.observer模式
这基本就是一个通知模式,当被观察者发生改变时,通知所有监听此变化的观察者。
MVC、消息队列等等设计有此思想。
在被观察者中,都会存储一个及以上的的观察者名单(映射)
2.visitor模式
访问者模式,主要的解决问题是,通过多态的方式解决,不同的被访问者将会体现不同的形态。
当然这个时候不同于observer模式的观察者名单,而是用不同的接口(接口参数是观察者实现类),
这样就会出现,扩展复杂,甚至是破坏封装(相互之间将会调用对方的私密属性等等)但是和其他模式一起使用就会事半功倍。