1.封装变化;当一个程序的某方面的特征经常变化时,则需要定义一个封装这方面的对象(模式)
比如:Strategy对象封装一个算法;State对象封装一个状态;Meditor封装对象间的协议;Iterator封装遍历和访问一个聚集对象的方法;
包括2方面,一个是封装这些行为的新对象,另外一个使用这些新对象的已有对象;
2.对象作为参数;
3.通信应该被封装还是被分布
Mediator和Observer是相互竞争的模式;Observer通过引入Observer和Subject对象来分布通信;而Mediator对象则封装了对象间的通信;
Observer模式有利于Observe和Subject的分割和松耦合,更容易复用;
而Mediator则对理解流程更容易;
4.对发送者和接收者进行解耦