建立算法族,分别封装起来,让它们可用互相替换,让算法的变化独立于使用算法的客户
系统中的某部分改变不会影响其他部分 封装变化的部分,便于后续扩展,隔离不需要变化的部分
针对接口、抽象类编程 而不是针对实现编程,即多态
多用组合,少用继承 使用组合建立的弹性系统,将算法族封装成类,在运行时动态地改变行为
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
为了交互对象之间的松耦合设计而努力。
动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
类应该对扩展开放,对修改关闭
装饰者和被装饰者对象有系统的基类
可以用一个或多个装饰者包装一个对象
装饰者可以在所委托被装饰者的行为之前 与/或 之后,加上自己的行为
定义一个创建对象的接口,但由子类来决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类
不能让高层组件依赖低层组件,两者要依赖抽象,不要依赖具体类,指导方针:
变量不可以持有具体类的引用
不要让类派生自具体类
不要覆盖基类中已实现的方法
将创建对象的代码集中在一个对象或方法中,可以避免代码中的重复,方便后续维护,