本文来了解一下什么是单一职责原则。

定义

假设一个类(class)中有两个职责,一个是指责A,一个是指责B,当我们修改A时,可能会导致B出现问题。就是说,职责A和职责B发生改变时都会影响这个class,从而使这个class可能发生变更。

解决方案:对于这两个指责分别建立class1和class2,使他们互相不影响。这个原则就是单一职责原则。

即一个类/接口/方法只负责一项职责。

好处:降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。

例子

单一职责原则是很好理解的,下面配以代码举一个小例子。

比如有一个类,描述的是鸟移动的模式,正常情况下鸟是飞的,但是如果传进来一只不会飞的鸟咋办呢,比如鸵鸟,这就需要判断一下了:

1
2
3
4
5
6
7
8
9
public class BirdMoveMode {
public void move(String birdName){
if(birdName.equals("鸵鸟")){
System.out.println(birdName+"是跑的...");
}else {
System.out.println(birdName+"是飞的...");
}
}
}

这个时候,最好是将这个类分离成两类,一个是会飞的,一个是走的:

image

1
2
3
4
5
6
7
8
9
10
11
public class FlyBird {
public void move(String birdName){
System.out.println(birdName+"是飞的...");
}
}

public class WalkBird {
public void move(String birdName){
System.out.println(birdName+"是跑的...");
}
}

对于接口和方法也一样,接口里面的方法声明分开;方法重载来分开。