- 디자인 패턴팩토리 패턴
[디자인 패턴] 팩토리 패턴
[디자인 패턴] 팩토리 패턴 팩토리 패턴은 생성 패턴의 한 종류다. 생성 패턴은 객체의 생성 방식을 결정하는 패턴으로 객체 생성을 추상화하는 패턴이다. 팩토리 패턴은 크게 2가지로 나뉘어진다. 팩토리 메서드 패턴과 추상 팩토리 패턴이다. 팩토리 메서드 패턴은 객체 생성을 구상 클래스의 메서드로 처리하는 것으로 객체 생성을 하는 인터페이스를 만들고 구현하는 패턴이다. 이 때 만들어지는 객체의 인터페이스를 제품이라고 표현하고 객체를 만드는 인터페이스를 생산자라고 표현한다. 추상 팩토리 패턴은 연관 및 의존하는 객체로 이루어진 하나의 객체를 생성하기 위한 인터페이스를 제공하는 패턴이다. 위 두 패턴은 모두 SOLID 원칙의 D(의존성 역전 원칙)과 깊은 관련이 있다. 왜냐하면 제품을 구상하는 제품 구상 클래스와 제품을 만드는 생산자 구상 클래스가 모두 구상 클래스를 의존하지 않고 제품 인터페이스를 통해 연결되기 때문이다. 간단한 팩토리 패턴을 설명하기 위해 요구사항을 만들고 이를 구현하겠다. 피자가게 요구사항 피자 주문을 받으면 피자 종류에 따라 type을 받는다. type에 맞는 피자를 만들고 가공한다. 피자 가게마다 만드는 똑같은 피자도 만드는 방식이 다르거나, 만드는 피자 종류가 다를 수 있다. 위 요구 사항 그대로 생각 없이 구현하면 아래와 같이 나올 거다. interface PizzaStore { Pizza orderPizza(String type); } interface Pizza { void prepare(); void bake(); void cut(); ... } ...2025-08-14 - Decorator Pattern
[디자인 패턴] Decorator 패턴
[디자인 패턴] Decorator 패턴 Decorator 패턴은 디자인 패턴에서 구조 패턴에 해당한다. 구조 패턴은 클래스나 객체를 조합하여 더 크고 복잡한 구조를 만들거나 기존 구조를 확장하는데 사용한다. 그리고 데코레이터 패턴은 클래스의 기능을 추가하기 위해서 다른 객체를 덧붙이는 패턴으로, 객체의 결합을 통해 동적으로 유연하게 확장할 수 있는 패턴이다. 데코레이터 패턴은 기존에 구현되어있는 클래스를 수정하지 않고, 기능을 추가할 수 있는 설계 패턴(OCP)으로 기능 확장이 필요할 때 동적인 기능이 필요할 때 subclass로의 상속 대안으로 사용할 수 있는 패턴이다. 이번엔 Decorator 패턴을 토핑추가가 가능하며, 토핑별로 가격이 달라지는 요구사항을 구현하는 것을 바탕으로 설명하겠습니다. 요구 사항 음료는 에스프레소, 블랙 커피, 밀크 커피가 있다. 토핑은 두유, 우유, 휘핑크림이 있다. 토핑 추가시 가격도 추가이 추가된다. 1.1 Decorator 패턴 없이 구현 Beverage Class public class Beverage { private Milk milk; private Soy soy; ... public String getDescription() {} public Integer cost() {} public void setMilk() {} public Boolean hasMilk() {} public Boolean hasSoy() {} public Boolean hasWhip() {} ... } Beverage 상속...2025-08-01 - Observer PatternReact Query
[디자인 패턴] Observer 패턴(feat. React Query)
옵저버 패턴 옵저버 패턴은 책임 분산을 위한 행위 패턴의 한 종류이고, 주로 분산 이벤트 처리 시스템을 구현하는데 사용한다. 주로 어떤 Subject의 상태 변화에 따라 Observer가 행위를 취하는 패턴을 구현하는데 사용된다 그래서 관찰 당하는 subject와 다수의 관찰하는 observer로 구성된다.(1:n 관계) 즉, 단일 피관찰자(subject)의 상태 변화에 따라 다수의 관찰자(observer)가 액션(행동, 행위)가 요구될 때 사용하는 패턴이다. 그리고 이 옵저버 패턴(Observer Pattern)을 확장한 디자인 패턴으로 발행-구독 패턴(Pub-Sub Pattern)이 있다. 옵저버 패턴이 오늘의 주인공이기 때문에 간단한 차이를 설명하면 pub-sub 패턴은 별도의 이벤트 채널로 publisher가 발행을 하면 subscriber가 구독 상태일때 처리하지만, observer 패턴은 별도의 이벤트 채널(중간 매개) 없이 발행자(Publisher)가 발행(or 상태 변화)를 하면 바로 구독자(Observer, Subscriber)가 처리한다는 것이다. 이제 본격적으로 옵저버 패턴에 대해 알아보자. 옵저버 패턴을 설명하려면 먼저 옵저버 패턴 적용 전 구조와 적용 후 구조를 보고 뭐가 달라졌는지 비교하고 확인해야한다. 위 그림은 홈페이지의 언어 설정을 변경했을때, 가격 출력기로 언어에 맞는 국가의 화폐단위와 소수점 처리 방식, 환율을 적용한 가격을 출력해주는 코드의 다이어그램이다. 그래서 이 기능 구현을 위해 홈페이지 언어 관리 객체에서 언어가 변경될 때 가격 계산기와 가격 형식 관리기의 상태를 변...2025-07-17