单一职责原则

单一职责原则(Single Responsibility Principle,SRP)是面向对象设计的一个基本原则。它的核心思想是:一个类(或模块)应该仅有一个引起它变化的原因。简单来说,每个类应该只有一个职责(或功能)。

具体解释

  1. 职责单一:每个类只做一件事。比如,用户管理类应只处理与用户相关的操作(如创建用户、更新用户等),而不应该处理与订单、库存等其他功能相关的操作。

  2. 变化原因:每个类应该有且仅有一个引起其变化的原因。如果一个类承担了多种职责,那么其中一项职责的变化可能会影响到这个类的其他职责,从而导致该类经常需要修改,增加维护的难度。

为什么要遵循单一职责原则?

示例

假设你有一个类负责处理“用户”相关的业务逻辑:

class UserManager {
    fun createUser() {
        // 创建用户的逻辑
    }

    fun deleteUser() {
        // 删除用户的逻辑
    }

    fun sendEmailToUser() {
        // 向用户发送邮件的逻辑
    }
}

在这个例子中,UserManager 既负责用户的创建和删除,又负责发送邮件。这违反了单一职责原则,因为“发送邮件”和“用户管理”是两个不同的职责。

可以将其拆分为两个类,每个类只负责一个职责:

class UserManager {
    fun createUser() {
        // 创建用户的逻辑
    }

    fun deleteUser() {
        // 删除用户的逻辑
    }
}

class EmailService {
    fun sendEmail() {
        // 发送邮件的逻辑
    }
}

这样做的好处是,如果需要修改发送邮件的逻辑,只需更改 EmailService,而不需要担心 UserManager 的其他功能受影响。