美文网首页
1 单一职责原则

1 单一职责原则

作者: 思无邪_1c6a | 来源:发表于2019-07-26 00:36 被阅读0次

    单一职责原则

    1.基本介绍

    一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2

    2.应用实例

    以交通工具案例说明

    1. 方案1
    public class SingleResponsibility1{
        public static void main(String[] args){
          Vehicle vehicle = new Vehicle();
          vehilcle.run("摩托车");
          vehicel.run("汽车");
          vehicel.run("飞机");
        }
    }
    
    class Vehicle{
        public void run(String vehicle){
            System.out.println(vehicle+"在公路上行驶...")
        }
    }
    
    

    缺点:违反了单一职责原则
    改进:根据交通工具运行方法不同,分解成不同的类。

    2)方案二

    public class SingleResponsibility2{
      public static void main(String[] args){
          RoadVehicle roadVehicle = new RoadVehicle();
          roadVehicle.run("摩托车");
          roadVehicle.run("汽车");
    
          AirVehicle airVehicle = new Airvehicle();
          airVehicle.run("飞机");
      }
    }
    
    class RoadVehicle{
        public void run(String vehicle){
            System.out.println(vehicle+"公路上运行");
        }
    }
    
    class AirVehicle{
        public void run(String vehicle){
            System.out.println(vehicle+"天空运行");
        }
    }
    
    

    分析:虽然遵守了单一职责原则。但改动很大
    改进:直接修改Vehicle类,让方法实现单一原则。

    3)方案三

    public class SingleResponsibility3{
      public static void main(String[] args){
          Vehicle2 vehicle2 = new Vehicle2();
          vehicle2.run("汽车");
          vehicle2.runWater("轮船");
          vehicle2.runAir("飞机");
      }
    }
    class Vehicle2{
        public void run(String vehicle){
            System.out.println(vehicle+"在公路上运行");
        }
        public void runAir(String vehicle){
            System.out.println(vehicle+"在天空上运行"):
        }
    }
    

    分析:这种修改方法没有对原来的类做大的修改,只是增加方法。
    虽然没有在类级别上遵守单一职责原则,但是在方法级别上遵守单一职责。

    3.单一职责原则注意事项和细节

    1)降低类的复杂度,一个类只负责一项职责。
    2)提高类的可读性,可维护性
    3)降低变更引起的风险
    4)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则。

    相关文章

      网友评论

          本文标题:1 单一职责原则

          本文链接:https://www.haomeiwen.com/subject/hdslrctx.html