프레임 워크 (vs 라이브러리)
공통으로 사용될 수 있는 특정한 기능을 모듈화한 것을 의미
폴더명, 파일명 등에 대한 규칙이 있고, 라이브러리에 비해 좀 더 엄격함
프레임워크
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합
- ex ) Spring 프레임워크, Django, Android
라이브러리
- 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합
- ex ) Python의 Pip로 설치한 패키지/모듈
⭐디자인 패턴이란?
프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록
하나의 '규약' 형태로 만들어 놓은 것을 의미
1. 싱글톤 패턴(Singleton pattern)이란?
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
데이터베이스 연결 모듈에 많이 사용함
하나의 인스턴스를 만들어 놓고, 해당 인스턴스를 다른 모듈들이 공유하며 사용
장점
인스턴스 생성 비용이 줄어듦
단점
TDD(Test Driven Development)를 할 때, 단위 테스트를 주로 하는데 각 테스트마다 ‘독립적인’ 인스턴스를 만들기가 어려움
모듈 간의 결합을 강하게 만들 수 있음 (-> 의존성/종속성 주입을 통해 모듈 간 결합을 더 느슨하게 만들어서 해결함)
의존성 주입 원칙
상위 모둘은 하위 모듈에서 어떠한 것도 가져오지 않아야 함
둘 다 추상화에 의존해야 하며, 추상화는 세부 사항에 의존하지 말아야 함
장점
- 모듈을 쉽게 교체할 수 있는 구조
- 테스팅이 쉽고, 마이그레이션하기도 수월
- 의존성 방향이 일관
- 애플리케이션 추론 용이
- 모듈 간의 관계들이 조금 더 명확
단점
- 클래스 수 증가로 복잡성 증가
- 런타임 패널티
2. 팩토리 패턴(Factory pattern)이란?
객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴
상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정
하위 클래스가 객체 생성에 관한 구체적인 내용을 결정
장점
객체 생성 로직이 따로 떨어져 있어 유지 보수성 증가
상위클래스에서는 인스턴스 생성 방식과 무관하여 많은 유연성을 가짐
3. 전략 패턴(Strategy pattern)이란?
== 정책 패턴(Policy pattern)
객체의 행위를 바꿀 때, 전략( 캡슐화된 알고리즘)을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 하는 패턴
전략패턴을 활용한 라이브러리, Passport
Node.js에서 인증 모듈을 구현할 때 쓰는 미들웨어 라이브러리
LocalStrategy 전략, OAuth 전략 등을 기반으로 인증할 수 있게 함
'CS 전공지식 > 디자인 패턴' 카테고리의 다른 글
프로그래밍 패러다임 (0) | 2023.07.12 |
---|---|
디자인 패턴 (MVC, MVP, MVVM 패턴) (0) | 2023.07.12 |
디자인 패턴 (옵저버, 프록시, 이터레이터, 노출모듈 패턴) (0) | 2023.07.12 |