Afaik
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() 패턴으로 전역 접근점 제공

실용적 예제 작성

두 가지 구현 패턴 제시:

  1. 기본 싱글톤: 단순한 객체 반환 패턴
  2. 유틸리티 싱글톤: 카테고리별 메서드 그룹화
    • 문자열 유틸리티 (capitalize, toCamelCase)
    • 날짜 유틸리티 (formatDate, getTimestamp)
    • 숫자 유틸리티 (formatCurrency, random)
    • 시스템 정보 유틸리티 (getVersion, getUserAgent)

장단점 분석

장점:

  • 메모리 효율성: 단일 인스턴스로 메모리 절약
  • 전역 상태 관리: 애플리케이션 전반의 상태 통합 관리
  • 리소스 공유: DB 커넥션 풀, 캐시 등 공유 자원 관리

단점:

  • 테스트 복잡성: 전역 상태로 인한 단위 테스트 어려움
  • 강결합: 다른 클래스와의 의존성 증가
  • 멀티스레드 이슈: 동시성 제어 필요

참고 자료