📌 객체 지향 프로그래밍이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다.
💭 어떤 클래스나 모듈은 변경하려는 단 하나 이유만을 가져야 한다
로버트 C. 마틴
클래스를 변경하는 이유가 한 가지이기 위해서는 하나의 액터에 대한 책임만 가지고 있어야 합니다.
여기서 책임은 하나의 특정 액터를 위한 기능 집합이고, 액터란 기능(=클래스 ,모듈)을 사용하는 주체입니다.
객체가 담당하는 동작, 즉 책임이 많아질 수록 그 객체의 변경에 따른 영향도의 양과 범위가 매우 커지게 됩니다!
💻 하지만 SRP를 코드에 적용하면,
책임 영역이 확실해져 한 책임의 변경에서 다른 책임의 변경의 연쇄작용에서 자유로울 수 있습니다. 즉, 코드의 의존성과 결합도를 줄입니다.
단일 책임 원칙은 특정 객체의 책임 의존성 과중을 지양하기 위한 중요하고 기본적인 원칙입니다.
protocol Animal {
func makeNoise()
}
class Dog: Animal {
func makeNoise() {
print("Woof!")
}
}
class Cat: Animal {
func makeNoise() {
print("Meow!")
}
}
let myDog: Animal = Dog()
let myCat: Animal = Cat()
myDog.makeNoise() // Woof!
myCat.makeNoise() // Meow!
Animal은 추상화 개념을 나타내며, Dog와 Cat은 Animal의 구체적인 형태. 이들은 Animal이 요구하는 makeNoise() 메소드를 구현
참고
단일 책임 원칙 https://yoongrammer.tistory.com/96