반응형

design pattern 5

Composite Pattern

Composite Pattern Composite Pattern이란 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴입니다. 즉, 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용합니다. 또한 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있습니다. Component: 모든 표현할 요소들의 추상적인 인터페이스 Leaf: Component로 지정된 인터페이스를 구현한 객체 Composite: Component 요소를 자식으로 가지고 Component 요소를 관리하기 위한 메소드들을 구현한 객체Composite Pattern의 예시 예를 들어 간단한 파일 시스템을 구현해보겠습니다. 먼저 필요한 것은 파일입니다. File.ja..

디자인 패턴 2020.07.03

Factory Pattern

1. 팩토리 패턴이란?객체 생성 로직을 캡슐화하는 생성(Creational) 디자인 패턴.new 키워드로 직접 생성하는 대신, 팩토리에 생성을 위임합니다.2. 세 가지 종류① 심플 팩토리 (Simple Factory)생성 로직을 별도 클래스로 분리. 가장 단순한 형태입니다.// 제품 인터페이스interface Shape { void draw();}// 구체 제품class Circle implements Shape { public void draw() { System.out.println("Circle 그리기"); }}class Rectangle implements Shape { public void draw() { System.out.println("Rectangle 그리기"); }}//..

디자인 패턴 2020.05.06

Chain Of Responsibility

Chain of Responsibility 패턴Chain of Responsibility(책임 연쇄)는 요청을 처리할 수 있는 객체들을 체인(사슬) 형태로 연결하고, 요청이 처리될 때까지 체인을 따라 전달하는 행동(Behavioral) 디자인 패턴입니다.💡 핵심 개념요청을 보내는 객체(클라이언트)와 요청을 처리하는 객체를 분리(decouple)체인 안의 각 객체는 요청을 직접 처리하거나, 다음 객체로 전달하거나, 둘 다 할 수 있��클라이언트는 어느 객체가 처리할지 알 필요가 없음🏗️ 구조Client → Handler1 → Handler2 → Handler3 → (처리 못하면 null)구성 요소역할Handler (인터페이스)요청 처리 메서드와 다음 핸들러 설정 메서드 정의ConcreteHandler실..

디자인 패턴 2020.05.02

Observer Pattern

Observer Pattern (옵저버 패턴)옵저버 패턴은 행동(Behavioral) 디자인 패턴 중 하나로, 객체의 상태 변화를 다른 객체들에게 자동으로 알려주는 구조입니다.핵심 개념"한 객체의 상태가 바뀌면, 그 객체에 의존하는 모든 객체들이 자동으로 알림을 받고 갱신된다."구성 요소역할Subject (발행자)상태를 가지고 있으며, Observer를 등록/해제하고 알림을 보냄Observer (구독자)Subject의 상태 변화를 통보받아 반응하는 인터페이스ConcreteSubjectSubject의 구체적인 구현체ConcreteObserverObserver의 구체적인 구현체구조 다이어그램Subject ──────────────────────────────────────┐ ├─ attach(observer..

디자인 패턴 2020.05.02

Template Method Pattern

1. 템플릿 메서드 패턴이란?알고리즘의 공통 프로세스(흐름)를 추상화하는 패턴부모 클래스가 프로세스의 흐름(실행 순서)을 정의하고, 자식 클래스가 각 단계에서 무엇을 할지 구현을 담당2. 핵심 특징프로세스 추상화가 주 목적 → 기능 추상화와 다름templateMethod()를 final로 선언해 흐름 자체는 변경 불가각 단계에서 무엇을 할지는 자식 클래스에서 오버라이드3. 샘플 코드// 부모 클래스 - 프로세스(흐름) 정의abstract class DataProcessor { // 템플릿 메서드 - 실행 순서 고정 (final로 변경 불가) public final void process() { readData(); processData(); writeDat..

디자인 패턴 2020.05.01
반응형