SOLID
객체지향의 4대 특성에 기반하기 때문에 5가지 모두 유사한 모양을 가지고 있다.
1. SRP(Single Resoponsibility Principle) : 단일 책임 원칙
- 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 한 가지뿐이어야 한다.
- 변경에 의한 연쇄작용 감소
- 가독성 향상
- 유지보수 용이
서로 밀접한 관계가 있는 기능끼리 클래스로 묶고, 서로 다른 기능을 하는 클래스를 최대한 떨어뜨려놓는 것이 좋다. 이렇게 하면 문제가 발생하더라도 문제가 발생한 부분과 관련 없는 동작에는 영향을 미치지 않거나, 그 영향이 작아질 수 있다. 즉, 객체지향 설계의 이점을 살려서 유지보수를 용이하게 만들어 줘야 한다.
2. OCP(Open Closed Principle) : 개방 폐쇄 원칙
- 자기 자신의 확장에는 열려있고, 변경에 대해서는 닫혀있어야 한다.
기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계해야 한다.
즉, 요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소에는 수정이 일어나지 않고, 기존 구성요소를 쉽게 확장할 수 있도록 해야 한다. 객체지향의 추상화와 다형성을 활용한다.
3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
- 서브 타입은 언제나 자신의 상위타입으로 교체할 수 있어야 한다.
- 클래스 상속, 인터페이스 상속을 이용해 확장성을 획득한다.
- 다형성과 확장성을 극대화하기 위해 인터페이스를 사용하는 것이 좋다.
4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- 가능한 최소한의 인터페이스만 구현한다.
어떤 클래스를 이용하는 클라이언트가 여러 개고, 이들이 그 기능의 일부만 사용한다면, 여러 인터페이스로 분리하여 클라이언트가 필요한 기능만 전달하도록 한다.
프로젝트 설계 방법에 따라 SRP(단일책임원칙), ISP(인터페이스 분리원칙) 중 선택한다.
5. DIP(Dependency Inversion Principle) : 의존 역전 원칙
- 상위 모델은 하위 모델에 의존하면 안 된다.
- 둘 다 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존해서는 안된다.
- 세부 사항은 추상화에 따라 달라진다.
하위 모델의 변경이 상위 모듈의 변경을 요구하는 위계관계를 끊는다.
실제 사용관계는 그대로이지만, 추상화를 매개로 메시지를 주고받으며 관계를 느슨하게 만든다.
반응형
'컴퓨터 공학 > 프로그래밍 이론' 카테고리의 다른 글
[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향) (1) | 2024.02.02 |
---|---|
[CS] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화) (0) | 2024.02.02 |
[Computer Science/디자인 패턴] 전략 패턴(strategy pattern) (0) | 2024.01.25 |
[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조 (0) | 2024.01.22 |
[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리 (0) | 2023.10.01 |