1. 单一职责:一个类只做一件事情
2. 开放封闭:类是可扩展的而不可修改
3. 依赖倒置:对一个类的操作不要直接修改,而是注入依赖,这样便于替换类
4. 配置化:常量和配置项应该放在统一使用配置文件而不是编码化
5. 面向接口编程:只关心接口不需要关心内部实现