[NestJS] SOLID
😶 SRP Single Responsibility Principle: 단일 책임의 원칙
. 단일 책임 원칙은 클래스(객체)는 단하나의 책임만 가져야한다.
(즉, 하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행해야 한다)
. "기능 변경(수정)"이 일어났을때의 파급 효과
: 여러개의 클래스들이 강한 결합되었을때, 그 중 한개의 클래스를 수정했을때의 개발 비용 증가 됨.
. SRP 원칙의 사용으로 클래스가 많아졌다고 하여도, 유지보수 측면에서 용이함.
. 한 책임의 변경으로부터 다른 책임의 변경으로의 연쇄작용에서 자유로워짐.
(코드의 가독성 향상, 유지보수 용이 -> 설계 원리들을 적용하는 기초가 됨)
😶 OCP Open Closed Priciple: 개방 폐쇄 원칙
. 확장에 열려있어야 하며, 수정에는 닫혀있어야 한다.
1. 확장에 열려있다.
: 새로운 변경 사항이 발생 시, 유연하게 코드를 추가함으로써 기능을 확장
2. 확장에 닫혀있다.
: 새로운 변경 사항 발생 시 객체를 직접적으로 수정을 제한.
. 추상화 사용을 통한 관계 구축을 권장
(즉, 다형성/확장 -> 객체 지향의 장점을 극대화)
😶 LSP Listov Substitution Priciple: 리스코프 치환 원칙
. 서브 타입은 언제나 부모타입으로 교체할수 있어야 한다. (다형성 원리를 이용한 원칙)
. 다형성 특징을 이용하기 위해 상위 클래스 타입으로 객체를 선언하여 하위 클래스의 인스턴스를 받으면,
업캐스팅된 상태에서 부모의 메서드를 사용해도 동작이 의도대로 흘러가야 되는 것을 의미
😶 ISP Interface Segregation Principle: 인터페이스 분리 원칙
. 인터페이스를 각각 사용에 맞게 분리해야한다.
. 인터페이스 단일 책임
. 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공
(한번 인터페이스를 분리하여 구성해놓고 나중에 무언가 수정사항이 생겨서 또 인터페이스들을 분리하는 행위 하면 안됨)
😶 DIP Dependency Inversion Principle: 의존 역전 원칙
. 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조
(인터페이스에 의존하라는 뜻)
- 참고
💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어
inpa.tistory.com
💠 완벽하게 이해하는 SRP (단일 책임 원칙)
단일 책임 원칙 - SRP (Single Responsibility Principle) 단일 책임 원칙(SRP)는 객체는 단 하나의 책임만 가져야 한다는 원칙을 말한다. 여기서 '책임' 이라는 의미는 하나의 '기능 담당'으로 보면 된다. 즉,
inpa.tistory.com
💠 완벽하게 이해하는 OCP (개방 폐쇄 원칙)
개방 폐쇄 원칙 - OCP (Open Closed Principle) 개방 폐쇄의 원칙(OCP)이란 기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙을 말한다. 보통 OCP를 확장에 대해서는
inpa.tistory.com
💠 완벽하게 이해하는 LSP (리스코프 치환 원칙)
리스코프 치환 원칙 - LSP (Liskov Substitution Principle) 리스코프 치환 원칙은 1988년 바바라 리스코프(Barbara Liskov)가 올바른 상속 관계의 특징을 정의하기 위해 발표한 것으로, 서브 타입은 언제나 기반
inpa.tistory.com
💠 완벽하게 이해하는 ISP (인터페이스 분리 원칙)
인터페이스 분리 원칙 - ISP (Interface Segregation Principle) ISP 원칙이란 범용적인 인터페이스 보다는 클라이언트(사용자)가 실제로 사용하는 Interface를 만들어야 한다는 의미로, 인터페이스를 사용에
inpa.tistory.com
💠 완벽하게 이해하는 DIP (의존 역전 원칙)
의존 역전 원칙 - DIP (Dependency Inversion Principle) DIP 원칙이란 객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스
inpa.tistory.com