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

140 阅读1分钟

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方法移除,因为破坏了单一性原则。缺点如下:
    1. 不符合单一性原则,toNode方法不是XxxConfig类的职责;
    2. 当两个类在不同的包时,会再成多余的依赖——XxxConfig所在的包必须依赖Node的包
  • 修改 将toNode方法抽离到调用端的convert类中。例如:
A         B
  \     /
     C
* A:XxxConfig所在包
* B:Node所在包
* C:调用端,此处建立XxxConfig到Node的转换逻辑;