더보기



1. 싱글톤 패턴(singleton pattern)
하나의 클래스당 하나의 인스턴스만 만듦(데이터베이스 연결 모듈)

DB.instance라는 하나의 인스턴스를 기반으로
a,b를 생성할 수 있음
(인스턴스 생성 비용! 아낀다!)
예) Node.js MongoDB 연결할 때 쓰는 mongoose 모듈 connect() 함수
Node.js에서 MySQLDB 연결할 때도 싱글톤 패턴이 쓰임
단점)
1. TDD(Test Driven Development)할 때 걸림돌
TDD는 단위테스트를 주로 하는데, 단위테스트는 서로 '독립적'이어야하며 어떤 순서로든 실행할 수 있어야함
싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하기 때문에 '독립적인' 인스턴스를 만들기가 어렵다.
2. 의존성(종속성) 주입
모듈간의 결합을 강하게 만들 수 있다는 단점이 있다. 이때 의존성 주입(DI, Dependency Injection)을 통해 모듈 간의
1. 싱글톤 패턴 (Singleton Pattern)
특징
- 하나의 클래스당 하나의 인스턴스만 생성
- 전역 상태처럼 공유됨
- 데이터베이스 연결 모듈에 자주 사용됨
연관 예시
- Node.js에서 MongoDB 연결 시 mongoose.connect()
- Node.js MySQL 커넥션 풀
- 서버 전역에서 하나의 DB 커넥션 유지
장점
- DB 커넥션을 중복 생성하지 않아 리소스 절약
- 전역에서 동일한 상태 보장
단점
- TDD에서 테스트 간 독립성 보장 어려움
- 상태가 공유되어 테스트 순서에 영향
- 모듈 간 결합도가 높아짐
의존성 주입(DI)과의 관계
- 싱글톤은 의존성을 내부에서 직접 생성하는 경우가 많음
- DI를 사용하면 외부에서 주입받아 결합도를 낮출 수 있음
2. 팩토리 패턴 (Factory Pattern)
특징
- 객체 생성 로직을 별도의 함수/클래스로 분리
- new 키워드를 직접 사용하지 않음
자바스크립트에서
- 함수 기반 팩토리
- 조건에 따라 다른 객체 반환
자바에서
- 인터페이스 + 구현 클래스 구조
- Factory 클래스가 구현체 선택
장점
- 객체 생성 책임 분리
- 생성 방식 변경 시 사용부 수정 최소화
- OCP(개방-폐쇄 원칙)에 유리
단점
- 구조가 단순한 경우 오히려 복잡해질 수 있음
- 클래스/파일 수 증가
3. 전략 패턴 (Strategy Pattern)
특징
- 알고리즘을 캡슐화하여 교체 가능
- 실행 중 전략 변경 가능
연관 예시
- passport의 인증 전략
- LocalStrategy
- JwtStrategy
- OAuth 전략
장점
- 조건문(if/else) 제거
- 새로운 전략 추가가 쉬움
단점
- 전략 객체 수 증가
- 구조를 이해해야 사용 가능
4. 옵저버 패턴 (Observer Pattern)
특징
- 상태 변화 시 등록된 객체들에게 알림
- 1:N 관계
연관 예시
- 트위터: 팔로워가 게시글 업데이트 수신
- MVC 패턴에서 Model → View 갱신
자바와의 관계
- interface 기반 구현
- implements로 Observer 구현
- 상속보다 느슨한 결합
장점
- 객체 간 결합도 낮음
- 이벤트 기반 구조에 적합
단점
- 옵저버가 많아지면 성능 이슈
- 디버깅이 어려움
5. 프록시 패턴 & 프록시 서버
프록시 패턴 특징
- 실제 객체 접근을 중간에서 제어
- 접근 제어, 로깅, 캐싱 가능
프록시 서버 예시
- Nginx
- Cloudflare
연관 기능
- DDoS 공격 방어
- HTTPS 구축 (SSL 종료 지점)
- CORS 제어
- 캐싱
장점
- 보안 강화
- 성능 개선
- 실제 서버 보호
단점
- 지연(latency) 발생 가능
- 설정 복잡
6. 이터레이터 패턴 (Iterator Pattern)
특징
- 컬렉션 내부 구조를 몰라도 순회 가능
JS에서의 예시
- for...of
- Symbol.iterator
- 배열, Map, Set
장점
- 순회 로직 통일
- 내부 구조 은닉
단점
- 단순 배열에는 체감 이점 적음
7. 노출 모듈 패턴 (Revealing Module Pattern)
특징
- private / public 구분
- 즉시 실행 함수(IIFE) 기반
연관 개념
- 캡슐화
- 정보 은닉
장점
- 외부에서 내부 상태 직접 접근 불가
- 인터페이스 명확
단점
- 테스트에서 private 접근 불가
- 최신 ES Module에선 사용 빈도 감소
8. MVC 패턴 (Model - View - Controller)
특징
- 역할 분리 중심 아키텍처
구성
- Model: 데이터 & 비즈니스 로직
- View: UI
- Controller: 요청 처리
리액트와의 관계
- 전통적 MVC는 아님
- 컴포넌트가 View + Controller 역할 일부 수행
장점
- 책임 분리 명확
- 유지보수 용이
단점
- Controller가 비대해질 수 있음
9. MVP 패턴 (Model - View - Presenter)
특징
- View와 Model 완전 분리
- Presenter가 모든 로직 담당
장점
- 테스트 용이
- View가 수동적
단점
- Presenter 코드 증가
- 구조 복잡
10. MVVM 패턴 (Model - View - ViewModel)
특징
- View ↔ ViewModel 데이터 바인딩
연관 프레임워크
- Vue
- Angular
장점
- UI 상태 관리 편리
- View 로직 최소화
단점
- ViewModel 비대화 가능
- 데이터 흐름 추적 어려움
'STUDY' 카테고리의 다른 글
| 실전 오픈소스 기여 프로젝트 (0) | 2026.01.07 |
|---|---|
| 프로그래밍 패러다임 (0) | 2026.01.06 |
| github (0) | 2025.12.26 |
| MDN Web Docs (0) | 2025.12.25 |
| 오픈소스 기여도 (0) | 2025.12.22 |