状态模式 State Pattern
2020-03-21
状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 《Head First 设计模式》举的例子是糖果机:糖果机定义了投币、退币、转…
中介者模式 Mediator Pattern
2020-03-19
在没有中介者的情况下,所有的对象都要认识其他对象,有了中介者后,对象只需要与中介者通信,对象之间彻底解耦。但是如果设计不当,中介者本身会过于…
观察者模式 Observer Pattern
2020-03-15
对象之间常有依赖关系,观察者模式可以让我们方便地监听一个对象,当它发生改变时,其他对象会自动收到通知并作出相应的反应。 实例 public class Subject { private int mState; private List<Observer>…
命令模式 Command Pattern
2020-03-13
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。 对这个设计模式的解读,网上一些文章存在误区。 实例 参与者 Receiver 接收…
代理模式 Proxy Pattern
2020-03-10
客户端不能或不想直接使用一个类时,用代理模式可以实现间接使用。 代理模式一般指的是静态代理,即在编译时实现,代理类 SubjectProxy 与被代理的真实类 RealSubject 实现同一…
享元模式 Flyweight Pattern
2020-03-08
享元模式与其说是一种设计模式,不如说是一种算法思想。将可以共享的对象存储在一个表中以节省内存,而不是每次都重新创建。 例如,Java 中的 Integer 类型…
外观模式 Facade Pattern
2020-03-07
将一个系统划分为若干子系统,有利于降低系统的复杂性,但是会使客户端的调用复杂化。 外观模式将这些子系统封装到一个类中,对客户端屏蔽这些子系统,…
桥接模式 Bridge Pattern
2020-03-06
当一个抽象可以有多个实现时,通常用继承来协调它们。 例如,对于表示形状的抽象类,可以有圆形、矩形等具体实现,但使用的绘图 API 实现可以不同,如果为…