1. 背景
一日,我写一个配置类,类似如下:
class XxxConfig {
private String prop1;
private String prop2;
public Node toNode() {
// convert to node logic
return node;
}
...
}
Note: 当时考虑toNode方法对XxxConfig的细节比较依赖,所以把这个方法放到了XxxConfig里。
2. 单一性原则
- 该类我分别让亮哥,阳哥review后,他们都一致建议我把toNode方法移除,因为破坏了单一性原则。缺点如下:
- 不符合单一性原则,toNode方法不是XxxConfig类的职责;
- 当两个类在不同的包时,会再成多余的依赖——XxxConfig所在的包必须依赖Node的包
- 修改 将toNode方法抽离到调用端的convert类中。例如:
A B
\ /
C
* A:XxxConfig所在包
* B:Node所在包
* C:调用端,此处建立XxxConfig到Node的转换逻辑;