SOLID
Single responsibility 单一职责
Open close principle 开闭原则
Lisk of substitution 替换原则(能被子类替代使用)
Interface segregation 接口隔离
Dependences 依赖抽象而不是具体