一、区分变与不变 不变为基类 变为接口 二、能够复用和拓展 复用为基类 拓展为接口 三、针对接口编程 抽象基类中有接口,子类去构建具体行为的接口。这时,可以直接new,但是用反射去实现更好。 例子:tomcat中的servlet配置文件 四、少用继承,多用组合