郑州手机网站建设多少钱,浙江建设厅网站怎么进不去,wordpress换头像,linux tomcat 网站目录一、单一职责原则 基本介绍
对类来说#xff0c;一个类应该只负责一项原则#xff0c;如类A负责两个不同职责#xff1a;职责1#xff0c;职责2。当职责1需求变更而改变A时#xff0c;可能造成职责2执行错误#xff0c;所以需要将类A的粒度分解为A1#xff0c;A2。
注… 一、单一职责原则 基本介绍
对类来说一个类应该只负责一项原则如类A负责两个不同职责职责1职责2。当职责1需求变更而改变A时可能造成职责2执行错误所以需要将类A的粒度分解为A1A2。
注意事项和细节
降低类的复杂度一个类只负责一项职责提高类的可读性可维护性降低变更引起的风险通常情况下我们都应该遵守单一职责原则。只有逻辑足够简单才可以在代码级别违反单一职责原则只有类中的方法足够少可在方法级别保持单一职责原则
应用实例
/*** Created with IntelliJ IDEA.* User: Mingda* Time: 2024/2/21 021 22:35* File: Singleresponsibility1* Description: 单一职责原则方式1*/
public class SingleResponsibility1 {public static void main(String[] args) {Vehicle vehicle new Vehicle();vehicle.run(轮船);vehicle.run(高铁);vehicle.run(汽车);}
}/*** 方式1* 1. 在方式1的run方法中违反了单一职责原则* 2. 解决方法应根据交通工具运行方式的不同分解成不同的类*/// 交通工具类
class Vehicle {public void run(String vehicle) {System.out.println(vehicle 在公路上行驶!!!);}
}/*** Created with IntelliJ IDEA.* User: Mingda* Time: 2024/2/23 14:27* File: SingleResponsibility2* Description: 单一职责原则方式2*/
public class SingleResponsibility2 {public static void main(String[] args) {RoadVehicle roadVehicle new RoadVehicle();roadVehicle.run(汽车);FlightVehicle flightVehicle new FlightVehicle();flightVehicle.run(飞机);SeaVehicle seaVehicle new SeaVehicle();seaVehicle.run(轮船);}
}/*** 方式2* 1. 遵守单一职责原则* 2. 但是这样改动很大将类分解需要修改客户端* 3. 改进直接修改Vehicle类改动很小相较于方式2*/// 公路交通工具类
class RoadVehicle {public void run(String vehicle) {System.out.println(vehicle 在公路上行驶);}
}// 飞行交通工具类
class FlightVehicle {public void run(String vehicle) {System.out.println(vehicle 在空中飞行);}
}// 海上交通工具类
class SeaVehicle {public void run(String vehicle) {System.out.println(vehicle 在海上行驶);}
}/*** Created with IntelliJ IDEA.* User: Mingda* Time: 2024/2/23 14:41* File: SingleResponsibility3* Description: 单一职责原则方式3*/
public class SingleResponsibility3 {public static void main(String[] args) {Vehicle2 vehicle new Vehicle2();vehicle.runRoad(汽车);vehicle.runFlight(飞机);vehicle.runSea(轮船);}
}/*** 方式3* 1. 将所有方法都放到一个类中每个方法都实现一个职责* 2. 类级别没有遵守单一职责原则但是方法级别遵守单一职责原则*/// 交通工具类
class Vehicle2 {public void runRoad(String vehicle) {System.out.println(vehicle 在公路上行驶);}public void runSea(String vehicle) {System.out.println(vehicle 在海上行驶);}public void runFlight(String vehicle) {System.out.println(vehicle 在空中行驶);}
}github笔记