728x90
SOLID 원칙
- 코드 수준보다 조금 상위에 적용되어 모듈과 컴포넌트 내부에서 사용되는 소프트웨어 구조를 정의하는 데 도움을 준다.
- SOLID 원칙이 만들어내는 소프트웨어 구조
- 변경에 유연한다.
- 이해하기 쉽다.
- 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 된다.
1. SRP : 단일 책임 원칙 (Single Responsibility Principle)
- 각 소프트웨어 모듈은 단 하나의 책임만을 가지고 있어야 하며 따라서 모듈의 변경의 이유는 단 하나여야만 한다.
- 하나의 모듈은 하나의 액터에 대해서만 책임져야 한다.
- 메서드, 클래스 수준의 원칙
2. OCP : 개방-폐쇄 원칙 (Open-Closed Principle)
- 소프트웨어 개체는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
- 기존 코드를 수정하기보다는 새로운 코드를 추가해서 시스템의 행위를 변경할 수 있도록 설계해야만 소프트웨어 시스템을 쉽게 변경할 수 있다.
- 저수준 컴포넌트의 변경으로부터 고수준 컴포넌트를 보호할 수 있는 형태의 의존성 계층구조가 만들어져야함.
3. LSP : 리스코프 치환 원칙 (Liskov Substitution Principle)
- 상호 대체 가능한 구성요소를 이용하여 소프트웨어 시스템을 만들 수 있으려면, 이들 구성요소는 반드시 서로 치환 가능해야한다.
- 부모 클래스의 인스턴스를 자식 클래스의 인스턴스로 치환할 수 있어야 한다.
- 자식 클래스는 부모 클래스의 역할을 모두 수행할 수 있어야 한다.
- 예시) LSP 위반 사례
- Rectangle(직사각형) <- Square(정사각형)
- Square는 항상 width, height가 같아야하기 때문에 만약 Rectangle이 Square로 치환되면 사용하던 actor는 제대로 기능을 사용할 수가 없다.
4. ISP : 인터페이스 분리 원칙 (Interface Segregation Principle)
- 소프트웨어 설계자는 사용하지 않은 것에 의존하지 않아야 한다.
- 사용하지 않은 클래스, 인터페이스 등을 상속하지 않아야 한다는 뜻
5. DIP : 의존성 역전 원칙 (Dependency Inversion Principle)
- 고수준 정책을 구현하는 코드는 저수준 세부사항 코드에 절대로 의존해서는 안된다.
- 반대로 세부사항이 정책에 의존해야한다.
- 상위 모듈은 하위 모듈에 의존해서는 안된다는 의미
- 자주 변화하는 구체적인 클래스보다 자주 변하지 않는 인터페이스, 추상 클래스 등에 의존해야한다.
728x90
'Architecture' 카테고리의 다른 글
[Architecture] 프로토타입 패턴 (Prototype Pattern) (0) | 2021.07.04 |
---|---|
[Architecture] 빌더(Builder) 패턴 (0) | 2021.06.21 |
[Architecture] 아키텍처 (Architecture) (0) | 2021.06.20 |
[Architecture] 구조적 프로그래밍 (0) | 2021.05.29 |
[Architecture] 함수형 프로그래밍 (0) | 2021.05.29 |
댓글