2025년Archive
9월 2일
오늘 배운 것 (TIL)
프론트엔드 마스터클래스 - 자바스크립트 심화 내용 보완 및 프로그래밍 패러다임 학습
핵심 요약 (TL;DR)
JavaScript 심화 내용을 메모 형식으로 정리하고, GoF 디자인 패턴을 3가지 범주로 분류하여 체계적으로 학습. 싱글톤 패턴의 실용적 구현 예제 작성.
프로그래밍 패러다임 - 객체지향 프로그래밍
GoF 디자인 패턴 분류
| 범주 | 개수 | 핵심 목적 |
|---|---|---|
| 생성 패턴 | 5개 | 객체 생성 방식의 유연한 제어와 캡슐화 |
| 구조 패턴 | 7개 | 클래스/객체 조합으로 더 큰 구조 형성 |
| 행동 패턴 | 11개 | 객체 간 소통과 책임 분산 방식 정의 |
구조 패턴 세분화
- 인터페이스 통합: Adapter, Facade, Proxy
- 객체 확장: Decorator, Composite, Bridge, Flyweight
행동 패턴 그룹화
- 알고리즘 관리: Strategy, Template Method
- 객체 간 통신: Observer, Mediator, Chain of Responsibility
- 상태와 실행 제어: State, Command, Memento
- 컬렉션과 해석: Iterator, Visitor, Interpreter
싱글톤 패턴 심화 학습
핵심 개념 정리
- 단일 인스턴스: 클래스의 인스턴스를 오직 하나로 제한
- 전역 접근: 어디서든 동일한 인스턴스에 접근 가능
- 지연 초기화: 최초 호출 시에만 인스턴스 생성
구현 방식 개선
JavaScript에서는 진정한 private 생성자가 없으므로:
- IIFE(즉시실행함수)나 클로저를 활용한 접근 제어
- getInstance() 패턴으로 전역 접근점 제공
실용적 예제 작성
두 가지 구현 패턴 제시:
- 기본 싱글톤: 단순한 객체 반환 패턴
- 유틸리티 싱글톤: 카테고리별 메서드 그룹화
- 문자열 유틸리티 (capitalize, toCamelCase)
- 날짜 유틸리티 (formatDate, getTimestamp)
- 숫자 유틸리티 (formatCurrency, random)
- 시스템 정보 유틸리티 (getVersion, getUserAgent)
장단점 분석
장점:
- 메모리 효율성: 단일 인스턴스로 메모리 절약
- 전역 상태 관리: 애플리케이션 전반의 상태 통합 관리
- 리소스 공유: DB 커넥션 풀, 캐시 등 공유 자원 관리
단점:
- 테스트 복잡성: 전역 상태로 인한 단위 테스트 어려움
- 강결합: 다른 클래스와의 의존성 증가
- 멀티스레드 이슈: 동시성 제어 필요