单一职责原则
定义
- 不要存在多于一个导致类变更的原因
- 一个类,接口,方法只负责一项职责
优点
- 降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险
代码示例
/**
* 单一职责原则
*/
public class SingleResponse {
public static void main(String[] args) {
// Bird bird = new Bird();
// bird.mainMoveMode("大雁");
// bird.mainMoveMode("鸵鸟");
FlyBird flyBird = new FlyBird();
flyBird.mainMoveMode("大雁");
WalkBird walkBird = new WalkBird();
walkBird.mainMoveMode("鸵鸟");
}
}
class Bird {
/**
* 不符合单一职责原则
*
* @param birdName
*/
public void mainMoveMode(String birdName) {
if ("鸵鸟".equals(birdName)) {
System.out.println(birdName + "用脚走");
} else {
System.out.println(birdName + "用翅膀飞");
}
}
}
/**
* 飞的鸟
* 类的层面上的单一职责原则
*/
class FlyBird {
public void mainMoveMode(String birdName) {
System.out.println(birdName + "用翅膀飞");
}
}
/**
* 走的鸟
* 类的层面上的单一职责原则
*/
class WalkBird {
public void mainMoveMode(String birdName) {
System.out.println(birdName + "用脚走");
}
}
/**
* 获取课程
*/
interface Course {
String getCourseName();
byte[] getCourseVideo();
void studyCourse();
void refundCourse();
}
/**
* 管理课程
*/
interface CourseManager {
void studyCourse();
void refundCourse();
}
/**
* 课程内容
*/
interface CourseContent {
String getCourseName();
byte[] getCourseVideo();
}
/**
* 接口成面的单一职责
*/
class CourseImpl implements CourseContent, CourseManager {
@Override
public void studyCourse() {
}
@Override
public void refundCourse() {
}
@Override
public String getCourseName() {
return null;
}
@Override
public byte[] getCourseVideo() {
return new byte[0];
}
}
/**
* 方法层面的单一职责原则
*/
class Method {
private void updateUserInfo(String userName, String address) {
userName = "jack";
address = "北京";
}
private void updateUserName(String userName) {
userName = "jack";
}
private void updateUserAddress(String address) {
address = "北京";
}
}