SRP : 단일 책임 원칙

OCP : 개방 폐쇄 원칙

LSP : 리스코프 치환 원칙

ISP : 인터페이스 분리 원칙

DIP : 의존 역전 원칙

단일 책임 원칙

클래스가 여러 책임을 가지게 되면 클래스는 각 책임마다 변경되는 이유가 발생하기 때문이다.

단일 책임 원칙은 가장 중요한 원칙 중 하나다.

스크린샷 2022-03-20 오후 4.24.00.png

입력을 받고, 카드를 나누고, 출력하는 일을 하고 있다. 책임이 분리되지 않으면 나중에 입력에 관련된 기능만 사용하고 싶어도 카드를 나누고 결과를 출력하는 일도 함께 해야한다. 책임을 나누게 된다면 패키징 할 필요없이 입력에 관한 클래스만 가져올 수 있다.

스크린샷 2022-03-20 오후 7.09.01.png

단일 원칙 책임을 지키지 않으면 한 책임의 구현 변경에 의해 다른 책임과 관련된 코드가 변경될 가능성이 높아진다. 기능 변경 요구가 없을 때 수정에 대한 문제가 없다는 것은, 책임의 단위는 변화되는 부분과 관련된다는 의미가 된다.

책임을 분리하는 것은 쉽지 않은데 해당 메서드를 누가 사용할지 생각해본다면 각각 다른 책임에 속할 가능성이 높고 책임 분리 후보가 될 수 있다.

개방 폐쇄 원칙