码迷,mamicode.com
首页 > 其他好文 > 详细

单一职责原则

时间:2019-07-26 02:02:05      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:应该   基本   逻辑   stat   water   res   缺点   可维护性   ring   

单一职责原则

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)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则。

单一职责原则

标签:应该   基本   逻辑   stat   water   res   缺点   可维护性   ring   

原文地址:https://www.cnblogs.com/chao-zjj/p/11247846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!