Java设计模式中的单一责任原则详解
作者:一只小熊猫呀
这篇文章主要介绍了Java设计模式中的单一责任原则详解,应该有且仅有一个原因引起类的变更,即单一指责原则要求一个借口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情,需要的朋友可以参考下
1、基本介绍
对类来说,即一个类应该只负责一项职责。
如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分为A1,A2
2、应用实例
2.1未遵循单一责任原则
在方式1的run方法中,飞机在公路上运行。明显违反了单一责任原则
package com.weirdo.principle.singleResponsibility; public class SingleResponsibility1 { public static void main(String[] args) { Vehicle vehicle = new Vehicle(); vehicle.run("摩托车"); vehicle.run("汽车"); vehicle.run("飞机"); } //交通工具类 static class Vehicle{ public void run(String vehicle){ System.out.println(vehicle+"在公路上运行..."); } } }
2.2遵循单一责任原则(类级)
遵守单一责任原则。
但是这样做改动很大,即将类分写,同时需要修改客户端。
package com.weirdo.singleResponsibility; public class SingleResponsibility2 { public static void main(String[] args) { RoadVehicle roadVehicle = new RoadVehicle(); roadVehicle.run("摩托车"); roadVehicle.run("汽车"); AirVehicle airVehicle = new AirVehicle(); airVehicle.run("飞机"); } static class RoadVehicle { public void run(String vehicle) { System.out.println(vehicle + "在公路上运行..."); } } static class AirVehicle { public void run(String vehicle) { System.out.println(vehicle + "在天上上运行..."); } } }
2.3遵循单一责任原则(方法级)
这种修改方法没有对原来的类做大的修改,只是增加方法。
然没有在类这个级别上遵守单一责任原则,但是在方法级别上仍然是遵守单一责任
package com.weirdo.singleResponsibility; public class SingleResponsibility3 { public static void main(String[] args) { Vehicle vehicle = new Vehicle(); vehicle.runAir("飞机"); vehicle.runRoad("汽车"); vehicle.runWater("航母"); } static class Vehicle { public void runRoad(String vehicle) { System.out.println(vehicle + "在公路上运行..."); } public void runAir(String vehicle) { System.out.println(vehicle + "在公路上运行..."); } public void runWater(String vehicle) { System.out.println(vehicle + "在水里运行..."); } } }
3、注意事项
- 降低类的复杂都,一个类只负责一项职责
- 提高类的可读性,可维护性
- 通常情况下,应该遵守单一责任原则。只有逻辑足够简单,才可以在代码级违反单一责任原则:只有类中方法数量足够少。可以在方法级别保持单一责任原则
到此这篇关于Java设计模式中的单一责任原则详解的文章就介绍到这了,更多相关Java单一责任原则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!