找出应用可能会变化的部分,把他们独立出来,不要和不变化的部分混合在一起。把变化封装起来,而不影响其他代码。针对接口编程,而不是针对实现编程多用组合,少用继承类应该对扩展开放,对修改关闭依赖倒置原则,要依赖抽象/接口,而不是依赖具体的类一个类应该只有一个引起变化的原因