从一个pojo类来看单一性原则

1. 背景

一日,我写一个配置类,类似如下:

1
2
3
4
5
6
7
8
9
10
class  XxxConfig {
private String prop1;
private String prop2;

public Node toNode() {
// convert to node logic
return node;
}
...
}

Note: 当时考虑toNode方法对XxxConfig的细节比较依赖,所以把这个方法放到了XxxConfig里。

2. 单一性原则

  • 该类我分别让亮哥,阳哥review后,他们都一致建议我把toNode方法移除,因为破坏了单一性原则。缺点如下:

    1. 不符合单一性原则,toNode方法不是XxxConfig类的职责;
    2. 当两个类在不同的包时,会再成多余的依赖——XxxConfig所在的包必须依赖Node的包
  • 修改
    将toNode方法抽离到调用端的convert类中。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
      A         B
    \ /
    C

    * A:XxxConfig所在包

    * B: Node所在包

    * C:调用端,此处建立XxxConfig到Node的转换逻辑;

评论