单一职责:一个类,只需要做好一件事情开放封闭:一个类,应该是可扩展的,而不可修改的依赖倒置:一个类,不应该强依赖另外一个类,每个类对于另外一个类都是可替换的配置化:尽可能的使用配置,而不是硬编码面向接口编程:只需要关心接口,而不需要关心实现