软件系统设计原则:
  1. 软件系统唯一不变的性质就是变化,系统设计时首先从高层抽象出功能模块和交互接口,形成一个相对稳定的系统模型;
  2. 分离开不变和变化的,不变的属于框架组件,变化的抽象出接口,封装具体实现; 
  3. 利用多态机制实现功能(接口)组合,针对接口编程,不针对实现编程;
  4. 对象应该对扩展开放,对修改关闭,即在不修改内部实现的条件下,由外部使用者继承或组合。