SOLID 원칙
●SOLID 원칙
- 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞 글자를 따서 만들어졌으며, 객체지향설계의 핵심 중 하나의 의존성을 관리
- 의존성을 잘 관리하기 위해서는 SOLID 원칙을 준수
●단일 책임 원칙(Single Responsibilty Principle)
- 클래스가 오직 하나의 목적이나 이유로만 변경되어야 한다는 것을 강조
- 여기서 "책임"이란 단순히 메서드의 개수를 뜻하지 않고, 특정 사용자나 기능 요구사항에 따라 소프트웨어의 변경 요청을 처리하는 역할을 의미
●리스코브 치환 원칙(Liskov Substitution Principle)
- 서브 타입은 언제나 상위 타입으로 교체할 수 있어야 하며 즉, 서브타입은 상위 타입이 약속한 규약을 지켜야함을 강조하며 이 원칙은 부모쪽으로 업 캐스팅하는 것이 안전함을 보장하기 위한 존재
- 상위 타입에 대해 기대되는 역할과 행동 규약이 있는데 이를 벗어나면 안되며, 만약 하위타입이 상위타입에 기대되는 역할을 만족하지 않는다면 상위타입을 사용하는 클라이언트 코드에서는 하위타입이 누구인지 물어봐야 하는데, 이는 OCP를 달성하기 어렵게 하며 LSP를 위반하는 대표적인 사례로는 Rectangle 예제가 있음
●인터페이스 분리 원칙(Interface Segregation Principle)
- 클라이언트 입장에서 인터페이스를 분리해야 함을 강조하며, 사용하지 않지만 의존성을 가지고 있다면 해당 인터페이스가 변경되는 경우 영향을 받으며, 따라서, 독립적인 개발과 배포가 불가하며 사용하는 기능만 재공하도록 인터페이스를 분리해 변경의 여파를 최소화할 수 있음
●의존성 역전 원칙(Dependency Inversion Principle)
- 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안되며, 모두 추상화에 의존해야 함을 강조
- SOLID는 서로 연관이 있으며, 의존성 역전 원칙을 통해서 하위 레벨의 모듈은 개방 폐쇄 원칙을 준수하면서 새로운 타입이 추가 가능