一、过滤器模式

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。

mongo 的查询接口有很多方法,例如 and,or,实际上就是串在一起。

二、组合模式

树枝内部组合该接口,并且含有内部属性 List,里面放 Component。叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

public class Employee {
   private String name;
   private String dept;
   private int salary;
   private List<Employee> subordinates;
 

三、装饰器模式

类似适配器,代理,桥接

java 的 IO 包就是典型代表

四、外观模式

为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。不符合开放封闭原则,如果要改东西很麻烦。

五、桥接模式

抽象类依赖实现类。

六、责任链模式

拦截器模式:以 Logger 为例,

public abstract class AbstractLogger {
protected AbstractLogger nextLogger;
}

七、观察者模式

微博动态可以设计成观察者模式,每个人记录自己的观察者,发送的时候通知。

八、策略模式

诸葛亮的锦囊妙计,每一个锦囊就是一个策略。