设计原则之单一职责原则详解

单一职责原则定义
一个类、接口、方法只负责一项职责,不要存在多于一个导致类变更的原因

这个原则指出对象不应该承担太多职责,如果一个对象承担了太多的职责,会至少存在以下两个缺点:

  1. 一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;
  2. 当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全都包含进来,从而造成冗余代码或代码的浪费。
优点:

使用好单一职责原则,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低因变更参数引起的风险等。但使用单一职责原则也不是任何情况下都追求完全的遵守。该原则适用于类也适用于方法。

我们以一个方法级别的例子来理解

例子为假设我们对一门新课的直播课和录播课进行不同的加密或其他操作,如果仅输出是否是直播课或录播课,一个类中判断没问题,如果进行加密或权限其他操作,则要遵循单一职责原则,拆分到不同的类中分别处理,会使代码更简洁更易读。

public class Course {
    public void study(String courseName){
        if ("直播课".equals(courseName)){
            System.out.println(courseName + "不能快进");
        }else {
            System.out.println(courseName + "可以反复观看");
        }
    }
}
public class CourseTest {
    public static void main(String[] args) {
        Course course = new Course();
        course.study("直播课");
        course.study("录播课");
    }
}

如果我们要对以上不同课程进行加密和加权限,则这么写后面维护起来会有问题。我们采用以下方法:将上面课程类拆分为直播课类和录播课类再分别实现

//直播课类,单一类处理单一逻辑,进行加密逻辑或其他
public class LiveCourse {
    public void study(String courseName){
        System.out.println(courseName + "不能快进");
    }
}
//录播课类,单一类处理单一逻辑,进行加密逻辑或其他
public class ReplyCourse {
    public void study(String courseName){
        System.out.println(courseName + "可以反复观看");
    }
}

其实很简单,就是每一个功能或一个小模块单独进行处理,维护起来也很容易维护

我们再举一个方法级别的例子
 public void modifyUserInfo(String userName,String Password,Boolean bool){
        if (){//符合某些逻辑置为true
            bool = true;
        }
        if (bool){
            //修改username相关
        }else {
            //修改password相关
        }
    }
    //以上方法拆分为以下方法,如果拆的不能再拆了,说明符合单一职责原则
    
    public void modifyUserName(String userName){
        //修改username相关
    }
    public void modifyUserName(String Password){
        //修改password相关
    }

对单一职责原则的使用也不用完全的遵照,有时候不拆分会比拆分更易读,是否使用及使用的程度需要你自己去把握,去斟酌。上面的例子不太恰当,但是大概意思的对的,理解就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值