时间:2022-10-06 11:57:57 | 栏目:JAVA代码 | 点击:次
单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。简单来说,就是针对一个java类,它应该只负责一项职责。例如一个Test.java类,它有两个职责:职责1,职责2。当职责1进行修改时,有可能影响到职责2,所以需要将Test.java类拆分成Test1.java和Test2.java两个单一职责的类。
有一个交通工具类,里面定义一个在各种交通工具的方法,创建交通工具的实例,调用方法,方法内执行打印操作
定义交通工具类Transportation.java
public class Transportation { /** * 汽车 * @author: liyajie * @date: 2022/1/28 14:45 * @param car * @return void * @exception: * @update: * @updatePerson: **/ public static void car(String car) { System.out.println(car + "在公路上跑"); } /** * 火车 * @author: liyajie * @date: 2022/1/28 14:45 * @param train * @return void * @exception: * @update: * @updatePerson: **/ public static void train(String train) { System.out.println(train + "在铁轨上跑"); } /** * 飞机 * @author: liyajie * @date: 2022/1/28 14:45 * @param airplane * @return void * @exception: * @update: * @updatePerson: **/ public static void airplane(String airplane) { System.out.println(airplane + "在天上飞"); }
定义测试类Test1.java
public class Test1 { public static void main(String[] args) { Transportation transportation1 = new Transportation(); transportation1.car("汽车"); transportation1.train("火车"); transportation1.airplane("飞机"); } }
定义汽车类Car.java
public class Car { /** * 汽车 * @author: liyajie * @date: 2022/1/28 14:45 * @param car * @return void * @exception: * @update: * @updatePerson: **/ public void car(String car) { System.out.println(car + "在公路上跑"); } }
定义火车类Train.java
public class Train { /** * 火车 * @author: liyajie * @date: 2022/1/28 14:45 * @param train * @return void * @exception: * @update: * @updatePerson: **/ public void train(String train) { System.out.println(train + "在铁轨上跑"); } }
定义飞机类Airplane.java
public class Airplane { /** * 飞机 * @author: liyajie * @date: 2022/1/28 14:45 * @param airplane * @return void * @exception: * @update: * @updatePerson: **/ public void airplane(String airplane) { System.out.println(airplane + "在天上飞"); } }
定义测试类Test2.java
public class Test2 { public static void main(String[] args) { Car car = new Car(); car.car("汽车"); Train train = new Train(); train.train("火车"); Airplane airplane = new Airplane(); airplane.airplane("飞机"); } }
方案一,是将汽车,火车,飞机的方法都写在了同一个类里,但是每个交通工具都有自己的方法,做到了方法上的单一职责,如果发生变更,该方案改动较小,但有一定的误操作风险
方案二,是将汽车,火车,飞机分别创建三个类,每个类里只有一种交通工具的方法,做到了类上的单一职责,如果发生变更,该方案改动较大,没有误操作风险
从以上的案例中总结,可以得出:
从业务出发,从需求出发,识别出同一个类型的职责,进行合理的职责分解。