访问者模式:数据结构相对稳定,对数据操作可变性强,数据结构提供accept方法接收一个Visitor,不同的Visitor有不同的访问此类数据结构的方法,一个visitor多个数据(BeanDefinitionVisitor)或多个visitor一个数据
模板模式:将算法的基本步骤抽象到父类,子类对某些具有差异的具体逻辑进行实现。
策略模式: 将算法(处理方式)封装为一个策略,客户端在发生某个行为时需选择一个策略 ,举例 RejectedExecutionHandler,Comparator
状态模式 : 允许对象在内部状态发生改变时改变它的行为,但是如果类有三种方法,四种状态,那么可能有12种行为,如何解决大量的if-else,那么每个State类都提供三种方法,类的操作委托给内部State类进行
观察者模式:observer/listener
备忘录模式:不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态,客户端请求对象生成备忘录,客户端保存备忘录,客户端使用备忘录请求对象恢复状态
中介者模式 :网状结构转换为星形结构, 中介者对象需知晓所有的对象,每个对象需知晓中介者对象 ,如Controller层就是View层和Model层的中介者
迭代器模式 :提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示,将遍历的任务交给迭代器对象,需支持多种遍历方式
解释器模式:
命令模式 :将请求封装为命令对象,invoker 持有 command ,command 持有 receiver,command 决定了由哪个receiver执行什么方法,所以invoker可以持有多个command,以完成不同行为。
责任链模式 :如Tomcat的FilterChain