본문 바로가기

전체 글91

[디자인 패턴 입문] Command(커맨드 패턴) 1. 왜 공부하게 되었을까?어떤 작업을 "나중에 실행하거나 취소"해야 할 때가 있었습니다.예: 사용자가 버튼을 클릭했을 때 다양한 작업을 실행해야 함예: 요청을 로그로 남기거나, 실행 기록을 기반으로 취소 기능을 구현해야 할 때이런 기능을 기존 구조로 만들자니, 실행 로직이 이벤트 핸들러나 컨트롤러 내부에 박혀 있어서 재사용도 어렵고, 나중에 작업을 되돌리는 것도 힘들었습니다. 특히 비즈니스 로직과 실행 트리거(버튼 클릭, 스케줄러 실행 등)를 명확히 분리하고 싶었습니다.그래서 "작업 자체를 하나의 객체로 만들어 관리하는 구조"가 필요했고, 커맨드 패턴이 적합하다는 걸 알게 되었습니다.2. 커맨드 패턴이란?기본 개념커맨드 패턴(Command Pattern)은 실행할 작업을 하나의 객체로 캡슐화해서, 실행.. 2025. 7. 9.
[디자인 패턴 입문] Decorator(데코레이터 패턴) 1. 왜 공부하게 되었을까?기능을 구현할 때, 처음에는 단순히 클래스를 만들어 기능을 구현합니다. 하지만 점점 기능들이 추가되는 경우가 빈번히 발생합니다.예를 들어기본 커피 → 시럽 추가 → 휘핑 추가 → 얼음 추가상품 정보 출력 → 할인 표시 추가 → 무료배송 뱃지 추가 → 신상품 표시 추가이런 식으로 기능을 추가하다 보면, 상속을 계속하거나 조건문이 길어져 코드가 복잡해집니다. 그래서 "기존 기능은 그대로 두고, 부가 기능만 유연하게 추가하는 구조"가 필요했고, 그걸 해결할 수 있는 방법으로 데코레이터 패턴을 알게 되었습니다.2. 데코레이터 패턴이란데코레이터 패턴(Decorator Pattern)은 기존 객체를 감싸서 기능을 동적으로 추가할 수 있는 구조입니다.쉽게 말해, 기본 기능은 건드리지 않고 .. 2025. 7. 7.
[디자인 패턴 입문] Observer(옵저버 패턴) 1. 왜 공부하게 되었을까?이런 고민이 생겼습니다:사용자가 주문을 하면 이메일도 보내야 하고,포인트도 적립해야 하고,관리자에게도 알려야 합니다.처음엔 하나의 클래스에서 다 처리할 생각이었습니다. 그런데 기능이 늘어날수록 코드가 점점 길어지고 지저분해지는 문제를 발견했습니다. 그래서 기능들을 깔끔하게 나누고 싶다는 생각이 들었고, 옵저버 패턴이 그를 도와줄 수 있음을 알게되었습니다.2. 옵저버 패턴이란?기본 개념옵저버 패턴은 어떤 객체의 상태 변화가 생겼을 때, 그것을 감지하고 자동으로 반응해야 하는 객체들에게 알림을 보내는 구조를 의미합니다. 이를 통해 이벤트가 발생했을 때 수행할 작업들을 객체로 분리할 수 있고, 핵심 로직과 부가 로직을 분리하여 코드의 유지보수성을 높일 수 있습니다.즉, "이벤트를 발.. 2025. 7. 4.
[디자인 패턴 입문] Strategy(전략 패턴) 1. 개념 정리전략 패턴(Strategy Pattern)은 실행할 수 있는 여러 알고리즘(전략) 중 하나를 상황에 따라 선택해서 사용할 수 있도록 만드는 디자인 패턴입니다.쉽게 말해 “상황에 따라 다른 방식으로 처리하고 싶을 때, 그 방법들을 미리 정의해놓고 필요한 것만 골라 쓰는 구조”라고 보면 됩니다.예를 들어 쇼핑몰에서 가격을 계산하는 방식이 여러 개 있다고 가정해봅시다.일반 계산 방식할인 쿠폰을 적용한 계산멤버십 등급에 따라 포인트를 반영한 계산이럴 때 전략 패턴을 사용하면 계산 로직들을 미리 전략으로 분리하고,사용할 때마다 원하는 전략을 선택해서 주입할 수 있게 됩니다.자바스크립트에서는 함수도 값처럼 다룰 수 있기 때문에, 전략을 함수로 정의해서 객체나 클래스에 전달하면 쉽게 구현할 수 있습니다.. 2025. 7. 3.
[디자인 패턴 입문] Factory(팩토리 패턴) 1. 개념 정리팩토리 패턴은 객체_(데이터와 기능을 하나로 묶은 구조)_를 만들 때, 그 생성 과정을 별도의 함수나 클래스로 분리해서 처리하는 방식입니다.쉽게 말해 "필요한 객체를 상황에 맞게 만들어주는 공장 같은 함수"라고 생각하면 됩니다.예를 들어, 웹사이트에 로그인한 사용자의 역할이 관리자(admin), 일반 사용자(user), 게스트(guest)로 나뉜다고 가정해봅시다.이때 각 역할마다 기능(예: 글쓰기, 읽기 권한 등)이 다르다면, 역할에 따라 서로 다른 객체를 만들어야 합니다. 이런 상황에서 팩토리 패턴이 유용하게 쓰입니다.자바스크립트에서는 이 패턴이 특히 자연스럽게 사용됩니다. 왜냐하면 자바스크립트는 원래부터 클래스보다는 함수를 중심으로 동작하는 언어이기 때문입니다.예를 들어,자바스크립트에서.. 2025. 7. 2.
[디자인 패턴 입문] Singleton(싱글턴) 1. 개념 정리싱글턴(Singleton)은 프로그램 전체에서 단 하나의 객체만 생성되도록 보장하는 디자인 패턴입니다.이 패턴은 여러 위치에서 동일한 설정, 로그 기록, 데이터베이스 연결 같은 기능을 사용할 때 유용합니다. 자바스크립트에서는 모듈 시스템(CommonJS 또는 ESModules)이 싱글턴처럼 동작합니다.한 번 불러들인 모듈은 이후에는 새로 실행되지 않고, 처음 불러온 결과를 계속 재사용하게 됩니다.따라서 하나의 모듈이 생성한 객체는 애플리케이션 전반에서 공유됩니다.이러한 구조로, JS에서는 싱글턴을 많이 활용합니다.2. 예제 코드가장 기본적인 싱글턴 구현class Config { constructor() { if (Config.instance) { return Config.i.. 2025. 7. 2.
반응형