1.多用组合,少用继承
2.针对接口编程,不针对具体实现编程
3.为交互对象之间的松耦合设计而努力
4.对扩展开放,对修改关闭
5.依赖抽象,不要依赖具体类
1.策略者模式
2.观察者模式
3.装饰者模式
4.抽象工厂模式
5.工厂方法模式