(single responsibility principle)
하나의 클래스는 하나의 책임만 가져야 한다
하나의 책임이라는 것은 모호합니다. 클 수 있고, 작을 수도 있습니다. 또한 문맥과 상황에 따라 다릅니다. 그래서 이 부분에서 경험이 필요합니다.
변경이 있을 때 파급 효과가 적어야 한다
그럼 언제 잘 설계를 했다고 할까요? 중요한 판단의 기준은 변경입니다. 변경이 있을 때 하나의 클래스, 하나의 지점만 고쳐야 한다면 SRP를 잘 지켰다고 볼 수 있습니다.
(Open/closed principle)
"가장 중요한 원칙"
소프트웨어 요소는 확장에서는 열려 있으나 변경에는 닫혀 있어야 한다
다형성을 생각해봅시다. (예시)
인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현
인터페이스를 구현한 새로운 클래스를 만드는 것은 기존 코드를 변경한게 아닙니다.
앞의 코드 예제를 다시 봅시다.