一个类只负责一种职责的工作,仅有一个原因会引起这个类的变化
假设有一个类C,它负责俩个职责分别是P1和P2,当职责P1需求发生变化需要修改类C,有可能会导致原本正常运行的职责P2发送错误
遵循单一职责原则,分别建立俩个类C1和C2,让C1完成P1,C2完成P2,这样无论修改C1还是C2都不会影响彼此
需求V1:员工的工资计算,刚开始,我们会新建一个员工类,类中有一个计算工资的方法
class Employee{
func calculateSalary(name:String) {
print("\(name)的工资是100")
}
}
let employee = Employee()
employee.calculateSalary(name: "小明")
//小明的工资是100
需求V2:因为员工职级不同,因此工资也不一样,所以遵循单一职责原则需要将Employee类细分为各个职级类,各职级类一样实现代码和Employee一样,只是方法calculateSalary有所不同,在实际开发中,考虑将Employee定义为协议,各职级实现协议,这样便方便扩展
protocol EmployeeProtocol{
func calculateSalary(name:String)
}
class Manager:EmployeeProtocol{
func calculateSalary(name:String) {
print("\(name)的工资是1000")
}
}
class Staff:EmployeeProtocol{
func calculateSalary(name:String) {
print("\(name)的工资是100")
}
}
let manager = Manager()
manager.calculateSalary(name: "经理") //经理的工资是1000
let staff = Staff()
staff.calculateSalary(name: "职员") //职员的工资是100