设计模式关系图(全网首发)之行为模式
行为模式之间关系
从类的构成,以及类之间传递数据的角度对行为模式进行划分。
类有数据(或状态)和算法构成。对整个算法部分进行变化,则为策略模式;对整体步骤固定(此为模板方法),仅一部分算法变化则为模板方法。
如果要访问的为一组有关系的类(源类有多个),则可使用访问者模式,将对这些被访问类型的访问变成一个访问者接口,在被访问类型里添加接受访问(accept)方法。
如果要访问一个类,这个类的内部状态是有限几个且行为随状态而变化则适合状态机模式。
如果要访问的为一组可抽取为相同接口但却是一个对象集合,则可使用迭代器模式(源对象是集合)。
如果对要访问对象需要读取状态而后又重置状态,则可使用备忘录模式。
一个对象向其他对象传递数据时,如果要传递给对象集合(目标对象是集合),有顺序的,可使用责任链模式,每个对象自行处理数据并决定是否继续向后传递;无顺序则可使用观察者模式,随时订阅或取消订阅。
如果传递数据和触发的动作分离,可使用命令模式,事先将命令和触发绑定,待触发时候再传递命令给目标对象。
如果不直接传递给目标对象,则可使用中介者模式,将发送数据的对象传递给一个中介对象,由中介决定再传递给哪个目标对象。
划分的维度可能不够严谨,望不胜赐教。
参考:行为型设计模式 (refactoringguru.cn)
评论