Design Pattern
템플릿 메서드 패턴(Template Method Pattern)
개발을 하다보면 공통적인 로직 흐름은 유지하되, 세부 구현은 각기 다르게 하고 싶을 때가 많습니다.바로 이럴 때 템플릿 메서드 패턴이 유용하게 쓰입니다. 템플릿 메서드(Template Method) 패턴은 상위 클래스에서 알고리즘의 뼈대를 정의하고, 그 일부 단계를 하위 클래스에서 구체적으로 구현하도록 하는 디자인 패턴입니다. 즉, 공통 로직은 상위 클래스에서 제공하고, 변경 가능한 부분만 하위 클래스에서 오버라이드하여 사용하는 방식입니다.PG사 별로 결제를 연동을 하게 되면 결제(Payment) 처리 흐름은 같지만, PG사(KakaoPay, TossPay 등)에 따라 구현 방식이 달라지게 됩니다. 결제 로직이 다음과 같은 공통 흐름을 가진다면사용자 인증결제 요청결과 처리하지만 PG사마다 요청 URL, ..
컴포지션 패턴 (Composition Pattern)
컴포지션 패턴은 상속 대신 여러 객체를 조합해 기능을 구성하는 방식이다. "is-a(상속)" 관계보다는 "has-a" (구성) 관계를 통해 객체를 구성하자. 상속 기반 구조의 한계 class Bird { void fly() { System.out.println("I can fly"); }}class Penguin extends Bird { // 펭귄은 날 수 없는데도 fly()를 상속 받음} 문제: Penguin은 Bird를 상속받았지만, 실제로는 날 수 없는 동물입니다.이처럼 상속은 계층 구조가 고정되어 있어 잘못된 기능을 포함시킬 가능성이 있습니다.컴포지션으로 해결interface FlyBehavior { void fly();}class CanFly implements FlyBeh..

옵저버 패턴 (Observer Pattern)
옵저버 패턴이란? 옵저버 (관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 옵저버 패턴은 일대다(one-to-many) 의존성을 가지고, 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용된다. 다른 말로는 (발행/구독) 모델이라고도 부른다. 일상 생활에서 찾아보면 유튜브로 비유할 수 있다. 유튜브에는 유튜버 채널은 발행자가 되고 구독자들은 관찰자로 볼 수 있다. 구독자들이 채널 알림 설정을 해 놓으면 영상이 올라올 때 마다 알림을 받을 수 있는데, 이를 패턴 구조로 들여다 보면 구독자들은 해당 채널을 구독함으로써 채널에 어떠한 변화(영상을 올라왔을때)가 생기게 되면 알림을 받아 영상이 올라..