Java设计模式--单一职责原则
·
对类来说,一个类应该只负责一项职责,如果类A负责两个不同职责:职责1、职责2.当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的颗粒度分解为A1,A2
方式1:没遵守单一职责
public class SingleResponsibility {
public static void main(String[] args) {
Vehicle vehicle=new Vehicle();
vehicle.run("摩托车");
vehicle.run("飞机");
}
}
//交通工具类
//方式1
//1. 在方式1的run方法中违反了单一职责原则 飞机不能在公路上跑
//应根据交通工具运行方法不同,分成不同类
class Vehicle{
public Vehicle(){
}
public void run(String vehicle){
System.out.println(vehicle+"在公路上跑...");
}
}
方式2:遵守单一职责 但是改动大
public class SingleResponsibility {
public static void main(String[] args) {
AirVehicle airVehicle=new AirVehicle();
RoadVehicle roadVehicle=new RoadVehicle();
airVehicle.run("飞机");
roadVehicle.run("汽车");
}
}
//方式2
//遵守了单一职责原则
//但是改动很大,需要将类分解,同时改动客户端
//可以直接修改Vehicle类,改动代码比较少--》方式3
class RoadVehicle{
public void run(String vehicle){
System.out.println(vehicle+"在公路跑");
}
}
class AirVehicle{
public void run(String vehicle){
System.out.println(vehicle+"在天上跑");
}
}
方式3:在类上没遵守单一职责,但是在方法上遵守了
public class SingleResponsibility {
public static void main(String[] args) {
Vehicle2 vehicle2=new Vehicle2();
vehicle2.run("汽车");
vehicle2.runAir("飞机");
}
}
//交通工具类
//方式3
//这种修改方法没有对原来的类做大的修改 只是增加了方法
//虽然在类的级别上没有遵守单一职责原则 但是方法的界别上遵守了单一职责原则
class Vehicle2{
public Vehicle2(){
}
public void run(String vehicle){
System.out.println(vehicle+"在公路上跑...");
}
public void runAir(String vehicle){
System.out.println(vehicle+"在天上跑...");
}
}
单一职责原则:
1.降低类的复杂度,一个类只负责一项职责
2,提高类的可读性 可维护性
3.降低变更带来的风险
4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则:只有类中的方法数量足够少,可以在方法级别保持单一职责原则
更多推荐
所有评论(0)