Java设计模式七大原则之单一职责原则详解

网友投稿 588 2022-08-29


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

*http:// @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("飞机");

}

}

对比分析

方案一,是将汽车,火车,飞机的方法都写在了同一个类里,但是每个交通工具都有自己的方法,做到了方法上的单一职责,如果发生变更,该方案改动较小,但有一定的误操作风险

方案二,是将汽车,火车,飞机分别创建三个类,每个类里只有一种交通工具的方法,做到了类上的单一职责,如果发生变更,该方案改动较大,没有误操作风险

总结

从以上的案例中总结,可以得出:

降低类的复杂度,一个类只负责一项职责 (一个类职责少了,相应的复杂度不就低了嘛)提高类的可读性以及可维护性 (相应的复杂度降低了,代码量就会减少,可读性也就提高了,可维护性自然也就提高了)降低变更引起的风险 (一个类职责越多,变更的可能性就会越大,变化带来的风险就会越大)通常情况下,我们应当遵守类级别单一职责原则 (只有逻辑足够简单,才可以在代码中违反单一职责原则)

如何遵守单一职责原则

从业务出发,从需求出发,识别出同一个类型的职责,进行合理的职责分解。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口开发总结,2022国内十大API接口服务平台
下一篇:Python映射类型内建函数与工厂函数操作实例源代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~