-
자바 - SRP (Single Responsibility Principle, 단일책임원칙)Java 2023. 11. 22. 22:09
핵심개념: '단일 책임 원칙(Single Responsibility Principle, SRP)은 하나의 클래스가 하나의 책임만을 가지며, 그 책임이 변경되는 이유는 하나만 있어야한다는 원칙입니다.'
단일 책임 원칙(Single Responsibility Principle, SRP)은 소프트웨어 설계 원칙 중 하나로, 각 클래스가 담당하는 책임이 하나여야 한다는 원칙입니다. 이 원칙은 클래스를 변경할 필요가 생기는 이유가 하나여야 함을 의미합니다. 즉, 하나의 클래스가 너무 많은 책임을 가지게 되면 그 클래스의 복잡도는 증가하게 됩니다.
자세한 설명:
SRP의 기본 아이디어는 클래스를 수정해야 하는 이유가 단 한 가지만 있어야 한다는 것입니다. 클래스가 두 가지 이상의 책임을 가지고 있다면, 이 책임들은 서로 연관성이 없을 가능성이 높습니다. 따라서, 한 책임에 대한 변경이 다른 책임에 미치는 영향을 최소화하려면, 각 책임을 각각의 클래스로 분리하는 것이 좋습니다.
이 원칙을 따르면, 시스템의 각 부분을 독립적으로 개발하고 변경할 수 있으므로, 코드의 가독성과 유지보수성이 향상됩니다.
예시:
예를 들어, '사용자 관리'와 '인쇄' 두 가지 책임을 가진 '사용자 관리자' 클래스가 있다고 가정해 봅시다. 이 클래스는 사용자의 정보를 관리하고, 사용자 정보를 인쇄하는 기능을 가지고 있습니다. 하지만 '사용자 관리'와 '인쇄'는 별개의 책임이므로, 이 두 가지 책임을 각각의 클래스로 분리하는 것이 SRP를 따르는 방법입니다.
샘플 코드:
// SRP를 따르지 않는 경우 class UserAdmin { void manageUser() { ... } void printUser() { ... } // 인쇄 책임 추가 } // SRP를 따르는 경우 class UserAdmin { void manageUser() { ... } } class UserPrinter { void printUser() { ... } // 인쇄 책임을 별도의 클래스로 분리 }
이처럼 단일 책임 원칙을 이해하고 적용하면, 코드의 복잡도를 줄이고 가독성과 유지보수성을 향상시킬 수 있습니다.
'Java' 카테고리의 다른 글
자바 - ISP (Interface Segregation Principle, 인터페이스 분리 원칙) (1) 2023.11.22 자바 - LSP (Liskov Substitution Principle, 리스코프 치환 원칙) (0) 2023.11.22 자바 - OCP (Open Closed Principle / 개방-폐쇄원칙) (0) 2023.11.22 BufferedReader, BufferedWriter (0) 2021.05.21 json을 자바 객체로 변환하기 (0) 2021.05.20