一文让你读懂“设计模式七大原则之——单一职责原则”

上一个轮的加班刚刚完结还没一周,领导就跑来告诉我:“小菜鸟,周末跟加班才更般配哟!”可怜的孩子又迎来了新的加急任务,美好的加班生活又要开始喽。

不!这不是菜鸟想要的生活,菜鸟要反抗,菜鸟决定了,要辞职。这不偷偷拿出手机登录各大招聘网站进行了浏览,突然发现怎么招聘还要求会设计模式呢?为此赶紧拿出那早已沾满灰尘的资料进行恶补。哎!在这之前还是扶我起来加班吧。

在这里插入图片描述

以上内容纯属虚构(除了加班),如有雷同请看下文。

今天让我们一起学习一下设计模式七大原则之——单一职责原则。
在这里插入图片描述

基本概念

拿java的类来说单一职责原则,就是一个类只负责一项职责,也可以称之为一项功能。

单一职责带来的好处

1、一个类只负责一项职责,最直接的好处就是降低类的复杂度。
2、职责的单一会提高类的可读性,提高程序的可维护性,降低后期维护成本。
3、因其只负责一项功能,所以当代码变动时不会影响到到其他功能,从而大大降低变更引起的风险。

理论知识就讲到这里,下面让我们看一段示例代码,从而加深一下对单一职责原则的理解。

代码时间

违反了单一职责原则的示例代码:

public class SingleResponsibilityDemo1 {

  public static void main(String[] args) {
    Eat eat = new Eat();
    eat.eat("老虎");
    eat.eat("山羊");
  }
}

/**
 * 吃饭类
 */
class Eat {
  
  public void eat(String animalName) {
    if ("老虎".equals(animalName)) {
      System.out.println(animalName + ",在狼吞虎咽的吃肉!");
    } else if ("山羊".equals(animalName)) {
      System.out.println(animalName + ",在细嚼慢咽的吃草!");
    }
  }
}

注:吃肉和吃草是两种行为,该类却写在一起了,典型的违反了单一职责原则。并且这样设计在之后需要添加吃其它食物的功能时需要再增加一个else if,当功能增多并且逻辑复杂时,会造成代码非常臃肿,难以理解和维护。

类级别遵守单一职责原则的示例代码:

public class SingleResponsibilityDemo2 {

  public static void main(String[] args) {
    EatMeat eatMeat = new EatMeat();
    eatMeat.eatMeat("老虎");
    EatGrass eatGrass = new EatGrass();
    eatGrass.eatGrass("山羊");
  }
}

// 吃肉类
class EatMeat {

  public void eatMeat(String animalName) {
    System.out.println(animalName + ",在狼吞虎咽的吃肉!");
  }
}

// 吃草类
class EatGrass {

  public void eatGrass(String animalName) {
    System.out.println(animalName + ",在细嚼慢咽的吃草!");
  }
}

在方法级别遵守单一职责原则的示例代码:

public class SingleResponsibilityDemo3 {

  public static void main(String[] args) {
    Eat eat = new Eat();
    eat.eatMeat("老虎");
    eat.eatGrass("山羊");
  }

}

class Eat {

  public void eatMeat(String animalName) {
    System.out.println(animalName + ",在狼吞虎咽的吃肉!");
  }

  public void eatGrass(String animalName) {
    System.out.println(animalName + ",在细嚼慢咽的吃草!");
  }
}

个人意见

1、单一职责虽好,但也不可以生搬硬套,不然会引起类的增多,添加额外的维护成本。
2、当代码的逻辑足够简单时,我们可以在代码级别违反单一职责原则;
3、当类中的方法数量少,并且业务逻辑不是特别复杂时,可以在类级别上违背单一职责原则,下沉至方法级别保持即可。
4、我们要根据需求和实际情况来灵活运用单一职责原则。

总体来说就是需要灵活运用单一职责原则,结合实际情况考虑是在类级别遵守还是在方法级别遵守。

今天的分享就到这里了,感觉文章写得不错的记得点赞加关注呦!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/first_M/article/details/106649721
今日推荐