1.封装变化 2.面向接口编程,而不是面向实现编程 3.多用组合,少用继承 4.为交互对象的松耦合设计而努力。 5.类应该对扩展开发,对修改关闭。 6.依赖抽象,不要依赖具体类 7.只和朋友交谈(least knowledge)