전 직장에서 NestJS를 사용해서 프로젝트를 진행했다.
NestJS는 OOP 원칙을 기반으로 하는 프레임워크이다.
객체 지향 설계 원칙들 중 하나인
의존 관계 역전 원칙(Dependency Inversion Principle : DIP)
: 이 원칙은 고수준 모듈이 저수준 모듈에 직접 의존하지 않도록, 추상화된 인터페이스에 의존하도록 하는 원칙이다. 이렇게 함으로써 확장성과 유연성이 높아지고 코드 수정 없이도 새로운 기능 추가가 가능하다는 장점이 있다.
여기서 DIP의 개념은 이해를 했는데, 추상화라는 개념이 머릿속에 정립되지 않아서 또 검색했다.
추상화라는 개념이 등장할 때 마다 구글링을 하고 있는 게 너무 귀찮다.
그만 검색하길 바라며 추상화에 대해 간략하게 정리하고 넘어가자
먼저 추상화의 반대 개념은 구체화라고 할 수 있다.
추상화는 중요한 기능에만 초점을 맞추고 세부 사항들을 감추는 것.
구체화는 숨겨진 세부사항까지 드러내서 구현에 집중하는 것.
이제까지 작성했던 인터페이스나 추상 클래스를 생각해보자 🤔
공통적인 부분만 뽑아내고 세부적인 사항들은 감춰서 하나의 인터페이스를 만들었다.
그렇다면 추상화란 중요한 부분을 강조하기 위해 덜 중요한, 불필요한 세부적 사항들은 제거해서 단순하게 만드는 개념이라고 생각할 수 있다.
이렇게 추상화된 인터페이스를 상속받아서 구체화된 클래스를 구현했었다.
Good 잊지말자
추상화란, 공통적인 부분만 뽑아내고 세부적인 사항들은 감춰서 단순하게 만드는 개념이다