종식당
SOLID 원칙 본문
🍱 SOLID
SOLID원칙은 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞 글자를 따서 만들었다. 객체지향설계의 핵심 중 하나는 의존성을 관리하는 것이다. 의존성을 잘 관리하기 위해서는 SOLID원칙을 준수해야 한다.
🥣 단일 책임 원칙 (Single Responsibility Principle)
단일책임원칙은 클래스가 오직 하나의 목적이나 이유만으로 변경되어야 한다는 것을 강조한다. 여기서 책임이라 단순히 메서드의 개수를 뜻하지 않고 특정 사용자나 기능 요구사항에 따라 소프트웨어의 변경 요청을 처리하는 역할을 의미한다.
즉, 클래스는 한 가지 변화의 이유만 가져야 하며, 이를 통해 변경이 발생했을 때 다른 기능에 영향을 덜 미치도록 설계된다. 이렇게 하면 유지보수가 쉬워지고 코드가 더 이해하기 쉬워진다.
🍑 개방 폐쇄 원칙(Open-Closed Principle)
개방 폐쇄 원칙은 확장에는 열려있고, 변경에는 닫혀 있어야 함을 강조한다. 이때 확장이란 새로운 타입을 추가함으로써 새로운 기능을 추가하는 것을 의미하며, 폐쇄란 확장이 일어날 때 상위 레벨의 모듈이 영향을 받지 않아야 함을 의미한다. 이를 통해서 모듈의 행동을 쉽게 변경할 수 있다.
🍽️ 리스코브 치환 원칙(Liskov Substitution Principle)
리스코브 치환원칙은 서브 타입은 언제나 상위 타입으로 교체될 수 있어야 한다는 것이다. 즉, 서브타입은 상위 타입이 약속학 규약을 지켜야 함을 강조한다. 이 원칙은 부모 쪽으로 업 캐스팅하는 것이 안전함을 보장하기 위해 존재한다. 상위 타입에 대해 기대되는 역할과 행동 규약이 있는데 이를 벗어나면 안 된다. 만약, 하위 타입이 상위 타입에 기대되는 역할을 만족하지 않는다면, 상위 타입을 사용하는 클라이언트 코드에서는 하위 타입이 누군지 물어봐야 하는데, 이는 OCP를 달성하기 어렵게 한다.
🥝 인터페이스 분리 원칙(Interface Segregation Principle)
인터페이스 분리 원칙은 클라이언트 입장에서 인터페이스를 분리해야함을 강조한다. 사용하지 않지만 의존성을 가지고 있다면 해당 인터페이스가 변경되는 경우 영향을 받는다. 따라서, 독립적인 개발과 배포가 불가하다. 사용하는 기능만 제공하도록 인터페이스를 분리해 변경의 여파를 최소화할 수 있다.
🥥 의존성 역전 원칙(Dependency Inversion Principle)
의존성 역전 원칙은 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안되며, 모두 추상화에 의존해야 함을 강조한다.
SOLID는 서로 연관이 있는데 의존성 역전 원칙을 통해서 하위 레벨의 모듈은 개방 폐쇄 원칙을 준수하며 새로운 타입이 추가 가능하다.
'매일메일' 카테고리의 다른 글
로드 밸런싱 (0) | 2025.04.04 |
---|---|
다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점 (0) | 2025.04.03 |
DB Replication이란? (0) | 2025.04.01 |
Record를 DTO로 사용하는 이유 (0) | 2025.03.27 |
HTTPS란? (0) | 2025.03.26 |