命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,可以对请求排队或记录请求日志,以及支持可撤销的操作。
将调用操作的对象与知道如何实现该操作的对象解耦,在不同的时刻指定、排列和执行请求,支持取消、重做的操作,还可以记录整个操作日志。支持事务。
状态模式:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。
状态模式提供了一个更好的办法来组织与特定状态相关的代码,决定状态转移到逻辑不在单块的if或switch中,而是分布在各个状态子类之间,由于所有与状态相关的代码都存在与某个状态子类中,所以通过新的子类可以很容易地增加新的状态和转换。
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
有多个对象可以处理一个请求,哪个对象处理该请求事先并不知道要在运行时刻自动确定,让客户在不明确指定接受者的情况下,提交一个请求,然后由所有能处理这请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
模板方法:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。如果我们在一个以上的地方看到相同的程序结构,那么可以肯定,设法将他们合而为一,程序会变得更好。但是完全相同的代码当然存在明显的重复,而微妙的重复会出现在表面不同但是