策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

观察者模式:定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所以依赖者都会受到通知并自动更新。

装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

工厂方法模式:定义了一个创建对象的接口,但由子类决定实例化的类是哪一个,工厂方法让类把实例化推迟到子类。