객체 지향 설계 5원칙(SOLID)
1. 단일 책임 원칙 (SRP, Single Responsibility Principle)
- 하나의 클래스는 단 하나의 책임만 가져야 한다.
- 변경을 기준으로 변경 시 파급효과가 적으면 단일 책임 원칙을 잘 따르는 것이다.
2. 개방-폐쇄 원칙 (OCP, Open/Closed Principle)
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 기능을 변경하거나 확장할 수 있으면서 기능을 사용하는 코드는 수정하지 않는다.
- 다형성을 활용하여 구현체가 아닌 추상화에 의존한다.
3. 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)
- 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
- 엑셀을 바꿨는데 엑셀 밟을때 앞으로 가야지 발 뗐을때 가서는 안된다.
4. 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)
- 범용 인터페이스 하나보다 특정 클라이언트를 위한 여러 개의 인터페이스로 구성하는 것이 좋다.
- 범용 인터페이스를 클라이언트가 필요로 하는 개별의 인터페이스로 분리함으로써 각 클라이언트가 사용하지 않는 인터페이스에 변경이 있어도 영향을 받지 않도록 만들어야 한다.
- 읽기와 쓰기 전용 인터페이스를 분리한다면 변경에 대한 영향을 더욱 세밀하게 제어할 수 있다.
5. 의존관계 역전 원칙 (DIP, Dependency Inversion Principle)
- 추상화에 의존해야지 구체화에 의존하면 안된다.
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안되고 저수준 모듈은 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.
- 비즈니스와 관련된 부분이 세부 사항에 의존하지 않는 설계 원칙
객체 지향 설계 5원칙인 SOLID가 얘기하는 핵심은 결국 추상화와 다형성이다. 구체 클래스에 의존하지 않고 추상 클래스(또는 인터페이스)에 의존함으로써 우리는 유연하고 확장가능한 애플리케이션을 만들 수 있는 것이다.
참고 자료
[OOP] 객체지향 프로그래밍의 5가지 설계 원칙, 실무 코드로 살펴보는 SOLID
이번에는 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해 알아보고자 합니다. 실제로 애플리케이션을 개발할 때 어떻게 적용할 수 있을지 구체적인 예시를 들어 살펴보고자 합니다. 아
mangkyu.tistory.com
'CS' 카테고리의 다른 글
클라이언트와 서버 (0) | 2023.04.03 |
---|---|
MSA(Microservice Architecture)란? (0) | 2023.03.29 |
의존성 주입(Dependency Injection) 이란? (0) | 2023.03.28 |
OOP 2: 객체 지향 프로그래밍의 특징 (0) | 2023.03.27 |
OOP 1: 객체 지향 프로그래밍(OOP) 이란? (0) | 2023.03.27 |