设计模式七大原则之单一职责原则
什么是单一职责原则
就一个类而言,应该仅有一个引起它变化的原因,一个类应该只负责一项职责。
- 一项职责不是说一个类内仅有一个方法,这个方法是一个职责,而是说该类负责了一方面的事情,比如课代表负责该科目的考勤、收发作业等而不负责教书等工作(这是属于教师的工作)。
举个栗子
public class SingleResponsibility {
public static void main(String[] args) {
Aircraft aircraft = new Aircraft();
aircraft.airFlight();
aircraft.spaceFlight();
}
}
class Aircraft{
public void airFlight(){
System.out.println("飞机在天上飞行。");
}
public void spaceFlight(){
System.out.println("飞机在太空中飞行。");
}
}
在上面的代码中,我们让一个飞机同时可以在大气中和太空中飞行,这显然是不符合单一职责原则的(严格来说不符合,宽泛一点来说,在方法层面是符合单一职责原则的)。因此,我们要对Aircraft类进行拆分:
public class SingleResponsibility {
public static void main(String[] args) {
Aircraft aircraft = new Aircraft();
Spacecraft spacecraft = new Spacecraft();
aircraft.flight();
spacecraft.flight();
}
}
class Aircraft{
public void flight(){
System.out.println("飞机在天上飞。");
}
}
class Spacecraft{
public void flight(){
System.out.println("航天器在太空中飞行。");
}
}
现在的Aircraft和Spacecraft两个类都符合单一职责原则。