提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。
定义一系列算法,封装每个算法,并使它们可以互换。可以让算法独立于使用它的客户端。
将命令(请求)封装在对象中,以便使用命令来参数化其它对象,或将命令对象放入队列中排队,或将命令对象的操作记录到日志中,以及支持可撤销的操作。
定义算法框架,并将一些步骤的实现延迟到子类。
通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。
为其他对象提供一种代理以控制对这个对象的访问。
将抽象与实现分离开来,使它们可以独立变化。
实现对象的复用:利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的
将对象组合成树形结构来表示“整体/部分”层次关系,允许用户以相同的方式处理单独对象和组合对象。