NestJS

[NestJS] SOLID

NJ94 2023. 9. 4. 19:56

😶 SRP Single Responsibility Principle: 단일 책임의 원칙

. 단일 책임 원칙은 클래스(객체)는 단하나의 책임만 가져야한다.

(즉, 하나의 클래스는 하나의 기능을 담당하여 하나의 책임을 수행해야 한다)

. "기능 변경(수정)"이 일어났을때의 파급 효과

: 여러개의 클래스들이 강한 결합되었을때, 그 중 한개의 클래스를 수정했을때의 개발 비용 증가 됨.

. SRP 원칙의 사용으로 클래스가 많아졌다고 하여도, 유지보수 측면에서 용이함.

. 한 책임의 변경으로부터 다른 책임의 변경으로의 연쇄작용에서 자유로워짐.

(코드의 가독성 향상, 유지보수 용이 -> 설계 원리들을 적용하는 기초가 됨)

 

😶 OCP Open Closed Priciple: 개방 폐쇄 원칙

. 확장에 열려있어야 하며, 수정에는 닫혀있어야 한다.

1. 확장에 열려있다.

: 새로운 변경 사항이 발생 시, 유연하게 코드를 추가함으로써 기능을 확장

2. 확장에 닫혀있다.

: 새로운 변경 사항 발생 시 객체를 직접적으로 수정을 제한.

. 추상화 사용을 통한 관계 구축을 권장

(즉, 다형성/확장 -> 객체 지향의 장점을 극대화)

 

😶 LSP Listov Substitution Priciple: 리스코프 치환 원칙

. 서브 타입은 언제나 부모타입으로 교체할수 있어야 한다. (다형성 원리를 이용한 원칙)

. 다형성 특징을 이용하기 위해 상위 클래스 타입으로 객체를 선언하여 하위 클래스의 인스턴스를 받으면,

업캐스팅된 상태에서 부모의 메서드를 사용해도 동작이 의도대로 흘러가야 되는 것을 의미

 

😶 ISP Interface Segregation Principle: 인터페이스 분리 원칙

. 인터페이스를 각각 사용에 맞게 분리해야한다.

. 인터페이스 단일 책임

. 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공

(한번 인터페이스를 분리하여 구성해놓고 나중에 무언가 수정사항이 생겨서 또 인터페이스들을 분리하는 행위 하면 안됨)

 

😶 DIP Dependency Inversion Principle: 의존 역전 원칙 

. 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조

(인터페이스에 의존하라는 뜻)

 

 

 

 

- 참고

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-SOLID

 

💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D

객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어

inpa.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-SRP-%EB%8B%A8%EC%9D%BC-%EC%B1%85%EC%9E%84-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 SRP (단일 책임 원칙)

단일 책임 원칙 - SRP (Single Responsibility Principle) 단일 책임 원칙(SRP)는 객체는 단 하나의 책임만 가져야 한다는 원칙을 말한다. 여기서 '책임' 이라는 의미는 하나의 '기능 담당'으로 보면 된다. 즉,

inpa.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-OCP-%EA%B0%9C%EB%B0%A9-%ED%8F%90%EC%87%84-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 OCP (개방 폐쇄 원칙)

개방 폐쇄 원칙 - OCP (Open Closed Principle) 개방 폐쇄의 원칙(OCP)이란 기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙을 말한다. 보통 OCP를 확장에 대해서는

inpa.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-LSP-%EB%A6%AC%EC%8A%A4%EC%BD%94%ED%94%84-%EC%B9%98%ED%99%98-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 LSP (리스코프 치환 원칙)

리스코프 치환 원칙 - LSP (Liskov Substitution Principle) 리스코프 치환 원칙은 1988년 바바라 리스코프(Barbara Liskov)가 올바른 상속 관계의 특징을 정의하기 위해 발표한 것으로, 서브 타입은 언제나 기반

inpa.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-ISP-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%B6%84%EB%A6%AC-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 ISP (인터페이스 분리 원칙)

인터페이스 분리 원칙 - ISP (Interface Segregation Principle) ISP 원칙이란 범용적인 인터페이스 보다는 클라이언트(사용자)가 실제로 사용하는 Interface를 만들어야 한다는 의미로, 인터페이스를 사용에

inpa.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-DIP-%EC%9D%98%EC%A1%B4-%EC%97%AD%EC%A0%84-%EC%9B%90%EC%B9%99

 

💠 완벽하게 이해하는 DIP (의존 역전 원칙)

의존 역전 원칙 - DIP (Dependency Inversion Principle) DIP 원칙이란 객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스

inpa.tistory.com