定义:不要存在多于一个导致类变更的原因
一个类/接口/方法只负责一项职责
优点:降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险
示例
实现一个让鸟飞起来的类
代码实现
- 实现Bird类
/**
* @author lijiayin
*/
public class Bird {
public void fly(String birdName){
System.out.println(birdName + "用翅膀飞");
}
}
- 创建测试类
/**
* @author lijiayin
*/
public class Test {
public static void main(String[] args) {
Bird bird = new Bird();
bird.fly("大雁");
bird.fly("鸵鸟");
}
}
-
测试结果
测试结果.png
鸵鸟也能飞?
鸵鸟是不能飞的,应该走路。
代码实现
- 修改Bird类
/**
* @author lijiayin
*/
public class Bird {
public void fly(String birdName){
if("鸵鸟".equals(birdName)){
System.out.println(birdName + "用脚走路");
}else {
System.out.println(birdName + "用翅膀飞");
}
}
}
-
测试结果
测试结果.png
更好的实现方式
让每个类实现一个功能,例如飞和走应该用两个类
代码实现
- 创建FlyBird类
/**
* @author lijiayin
*/
public class FlyBird {
public void move(String birdName){
System.out.println(birdName + "用翅膀飞");
}
}
- 创建WalkBird类
/**
* @author lijiayin
*/
public class WalkBird {
public void move(String birdName){
System.out.println(birdName + "用脚走路");
}
}
- 修改测试类
/**
* @author lijiayin
*/
public class Test {
public static void main(String[] args) {
FlyBird flyBird = new FlyBird();
flyBird.move("大雁");
WalkBird walkBird = new WalkBird();
walkBird.move("鸵鸟");
}
}
-
测试结果
图 -
UML
UML.png
网友评论