커맨드 패턴(Command Pattern)이란? 커맨드 패턴을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다. 커맨드 패턴의 주요 구성요소 1. 커맨드(Command): 요청을 나타내는 인터페이스이다. execute 메서드를 통해 실제 요청을 수행한다. 2. 컨크리트 커맨드(Concrete Command): Command 인터페이스를 구현한 구체적인 커맨드 클래스로, 실제 요청을 수행하는 코드가 들어 있다. 3. 호출자(Invoker): 커맨드 객체를 호출하는 객체이다. 이 객체는 클라이언트의 요청을 처리하기 위해 커맨드 객체를 호출한다. 4. 수신자(Receiver): ..
싱글턴 패턴(Singleton Pattern)이란? 싱글턴 패턴은 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 싱글턴 패턴의 특징 1. 단일 인스턴스: 싱글턴 패턴은 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장한다. 이 인스턴스는 어플리케이션 내에서 전역적으로 접근 가능하며, 여러 곳에서 동시에 사용될 수 있다. 2. 전역 접근 지점: 싱글턴 클래스의 인스턴스는 어디서든지 접근 가능한 전역 변수처럼 사용됩니다. 이를 통해 어플리케이션 전체에서 동일한 상태를 공유하거나 특정 기능을 사용할 수 있다. 3. 지연된 초기화 (Lazy Initialization): 인스턴스가 처음으로 요청될 때까지는 생성되지 않고, 필요한 순간에 생성된다. 이를 통해 초기화에 필요한 자원을 ..
팩토리 패턴(Factory Pattern)이란? 팩토리 패턴은 객체를 생성하는 과정을 캡슐화하고, 이를 통해 클라이언트가 생성되는 객체의 타입을 지정하지 않고도 객체를 얻을 수 있게 한다. 또한, 객체의 생성과 관련된 복잡한 로직이나 클래스를 숨기고, 객체 생성을 담당하는 팩토리 클래스를 도입하여 시스템을 더 유연하게 만든다. 팩토리 패턴의 세가지 타입 1. 간단한(또는 정적) 팩토리 메서드 패턴(Simple or Static Factory Method Pattern): 하나의 팩토리 메서드가 객체를 생성하는 패턴이다. 이는 일반적으로 인터페이스나 추상 클래스를 통해 여러 하위 클래스들이 구현될 수 있다. 2. 팩토리 메서드 패턴(Factory Method Pattern): 여러 객체를 생성하는 팩토리를..
데코레이터 패턴(Decorator Pattern)이란? 기존의 객체에 새로운 기능을 동적으로 추가할 수 있도록 하는 패턴입니다. 이 패턴은 상속보다 유연한 구조를 제공하며, 객체의 변경 없이 새로운 기능을 추가할 수 있게 한다. 데코레이터 패턴의 핵심 구성요소 1. 컴포넌트(Component): 실제로 기능을 추가하고자 하는 객체를 나타낸다. 데코레이터 패턴에서는 인터페이스나 추상 클래스로 정의된다. 2. 컨크리트 컴포넌트(Concrete Component): Component를 구현한 구체적인 클래스로, 실제로 추가 기능이 필요한 객체이다. 3. 데코레이터(Decorator): 실제로 새로운 기능을 추가하는 역할을 한다. 이는 Component를 상속하며, 내부에 다른 Component를 포함한다. ..
옵저버 패턴(Observer Pattern)이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 옵저버 패턴의 핵심 구성요소 1. 주체(Subject): 상태가 변하는 객체를 나타낸다. 이 객체는 옵저버들을 등록하고, 상태가 변경되었을 때 등록된 옵저버들에게 알림을 보낸다. 2. 옵저버(Observer): 주체의 상태 변화를 감지하고 이에 대응하는 동작을 수행하는 인터페이스를 정의한다. 일반적으로 update 메서드가 이 역할을 한다. 3. 구체적인 옵저버(Concrete Observer): 옵저버 인터페이스를 구현한 구체적인 클래스들로, 주체의 상태가 변경되었을 때 수행할 동작을 정의한다. 옵저..
전략 패턴(Strategy Pattern)이란? 전략 패턴은 알고리즘을 정의하고 각각을 캡슐화하여 교환 가능하도록 만드는 패턴이다. 이 패턴은 동일한 문제를 해결하기 위해 여러 알고리즘이 필요하거나, 알고리즘의 변경이 필요한 경우에 유용하게 사용된다. 전략 패턴의 핵심 아이디어는 알고리즘을 클라이언트로부터 독립적으로 정의하고, 클라이언트가 사용할 전략을 동적으로 교체할 수 있도록 하는 것이다. 전략 패턴의 주요 구성 요소 1. 전략(Strategy): 알고리즘을 나타내는 인터페이스 또는 추상 클래스이다. 이 인터페이스를 구현하는 여러 전략들이 있다. 2. 구체적인 전략(Concrete Strategy): 전략을 실제로 구현한 클래스로, 알고리즘의 구체적인 내용을 담고 있다. 3. 컨텍스트(Context)..