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