设计原则:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要的代码混在一起。 针对接口编程,而不是针对实现编程。“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口” 多用组合,少用继承