반응형

분류 전체보기 133

디자인 패턴 - 그외

1. 마이크로서비스 & 클라우드 네이티브 패턴 ☁️분산 시스템 환경에서 발생하는 문제들을 해결하기 위한 패턴들입니다.패턴 이름한국어 번역해결하려는 문제 & 개념Circuit Breaker서킷 브레이커특정 서비스의 장애가 전체 시스템으로 퍼지는 것을 막습니다. 가정의 전기 차단기처럼, 특정 서비스에 대한 요청이 계속 실패하면 일시적으로 연결을 끊고, 서비스가 복구되면 다시 연결을 시도합니다.API GatewayAPI 게이트웨이여러 마이크로서비스들의 단일 진입점(창구) 역할을 합니다. 클라이언트는 게이트웨이만 알면 되고, 인증, 로깅, 라우팅 등 공통 기능을 게이트웨이가 처리해 줍니다. (Facade 패턴의 확장판)Saga사가여러 서비스에 걸친 분산 트랜잭션을 관리합니다. 한 단계가 실패하면, 이전 단계들을..

디자인패턴 - 상태 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 상태 패턴 (State)1. 상태 패턴이란? 🚦개념: 객체의 내부 상태가 변경될 때마다 그 행동을 바꿀 수 있게 하는 패턴입니다. 상태별로 다른 행동들을 각각의 상태 클래스로 캡슐화하고, 주체 객체(Context)는 자신의 현재 상태를 나타내는 상태 객체에게 행동을 위임합니다.자판기를 생각하면 이해하기 쉽습니다. 자판기는 자신의 상태에 따라 완전히 다르게 행동합니다.'동전 없음' 상태: 돈을 넣으라는 메시지만 보여줍니다.'동전 있음' 상태: 음료 버튼을 누를 수 있습니다.'음료수 품절' 상태: 돈을 넣어도 음료 버튼이 작동하지 않습니다.이처럼, 자판기(Context)는 하나지만, 그 내부 상태(NoCoinState, HasCoinState, SoldOu..

디자인패턴 - 템플릿 매서드 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 템플릿 메서드 패턴 (Template Method)1. 템플릿 메서드 패턴이란? 📝개념: 알고리즘의 뼈대(구조)를 상위 클래스에 정의하고, 알고리즘의 일부 단계를 하위 클래스에서 재정의할 수 있도록 하는 패턴입니다. 즉, 전체적인 흐름은 고정하되, 세부적인 내용은 하위 클래스가 자유롭게 바꿀 수 있게 해줍니다.요리 레시피를 생각하면 이해하기 쉽습니다. 어떤 요리든 '재료 준비 → 조리 → 그릇에 담기'라는 기본 절차(템플릿)가 있습니다. 여기서 '조리'라는 단계는 메뉴(라면, 카레 등)에 따라 구체적인 방법이 달라집니다. 템플릿 메서드 패턴은 이처럼 전체적인 절차(템플릿 메서드)는 상위 클래스가 정하고, 구체적인 내용(추상 메서드)은 하위 클래스가 채우..

디자인패턴 - 커맨드 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 커맨드 패턴 (Command)1. 커맨드 패턴이란? 📜개념: 요청(Request)을 객체로 캡슐화하여, 요청이 실행되는 시점이나 방식, 수신자 등을 동적으로 결정할 수 있게 만드는 패턴입니다. 이 패턴을 사용하면 요청을 큐에 저장하거나, 로깅하거나, 되돌리는(Undo) 기능을 쉽게 구현할 수 있습니다.레스토랑에서 주문하는 과정을 생각하면 쉽습니다.손님 (Client): 요청을 생성합니다. ("스테이크 주세요")웨이터 (Invoker): 요청을 받아 큐에 전달합니다. 주문서(Command)를 주방에 전달하는 역할을 합니다.주문서 (Command): 요청에 필요한 모든 정보(메뉴: 스테이크, 수량: 1)를 담고 있는 객체입니다.요리사 (Receiver): ..

디자인패턴 - 옵저버 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 옵저버 패턴 (Observer)1. 옵저버 패턴이란? 🔔개념: 한 객체(Subject)의 상태가 변하면, 그 객체에 의존(구독)하는 다른 객체들(Observer)에게 자동으로 알림을 보내고 업데이트할 수 있게 만드는 일대다(one-to-many) 의존성 패턴입니다.가장 완벽한 예는 유튜브 채널 구독입니다.유튜버 (Subject): 상태를 가진 주체. 새로운 영상을 올리면 '상태 변화'가 발생합니다.구독자 (Observer): 유튜버를 관찰하는 객체들.구독 (Register): 구독자가 '구독' 버튼을 눌러 자신을 유튜버의 알림 목록에 추가합니다.알림 (Notify): 유튜버가 새 영상을 올리면, 알림 목록에 있는 모든 구독자에게 알림이 갑니다.2. 왜 ..

디자인패턴 - 전략패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 전략 패턴 (Strategy)1. 전략 패턴이란? ⚔️개념: 다양한 전략(알고리즘)들을 각각의 클래스로 캡슐화하고, 이들을 동적으로 교체하여 사용할 수 있게 만드는 패턴입니다. 즉, 행위(전략) 자체를 객체로 만들어 컨텍스트 객체에 주입하는 방식입니다.게임 캐릭터가 상황에 따라 칼, 활, 마법 지팡이 등 다양한 무기(전략)를 바꿔가며 공격하는 것을 생각하면 쉽습니다. 캐릭터(컨텍스트)는 공격한다는 행위 자체는 변하지 않지만, 어떤 무기(전략 객체)를 손에 드느냐에 따라 공격 방식이 완전히 달라집니다.2. 왜 사용할까요?전략의 손쉬운 교체: if-else 나 switch 문으로 가득 찬 코드를 피할 수 있습니다. 새로운 전략이 추가되더라도 기존 코드를 수정..

디자인패턴 - 컴포지트 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 컴포지트 패턴 (Composite)1. 컴포지트 패턴이란? 🌳개념: 객체들을 트리 구조로 구성하여 **부분-전체 계층(Part-Whole Hierarchy)**을 표현하는 패턴입니다. 이 패턴을 사용하면, 클라이언트가 **개별 객체(Leaf)**와 **복합 객체(Composite)**를 구분하지 않고 동일하게 다룰 수 있습니다.가장 완벽한 예는 컴퓨터의 파일 시스템입니다.파일(File): 개별 객체 (Leaf)폴더(Folder): 다른 파일이나 폴더를 담는 복합 객체 (Composite)우리는 파일의 이름을 바꾸거나 폴더의 이름을 바꿀 때 똑같이 '이름 바꾸기' 기능을 사용합니다. 파일의 크기를 보거나 폴더의 총 크기를 볼 때도 '크기 보기'라는 동일한..

디자인패턴 - 프록시 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 프록시 패턴 (Proxy)1. 프록시 패턴이란? 💳개념: 어떤 객체에 대한 접근을 제어하기 위한 대리인(Proxy)이나 대리자 역할을 하는 객체를 제공하는 패턴입니다. 프록시는 실제 객체와 동일한 인터페이스를 가지므로, 클라이언트는 실제 객체를 사용하는지 프록시 객체를 사용하는지 모른 채 상호작용할 수 있습니다.가장 쉬운 예는 신용카드입니다. 신용카드는 여러분의 은행 계좌(실제 객체)에 대한 프록시입니다. 여러분은 식당에서 현금(실제 객체)을 직접 꺼내지 않고 신용카드(프록시)로 결제합니다. 이 과정에서 카드는 결제 한도 확인(접근 제어), 포인트 적립(부가 기능) 등의 역할을 수행합니다.2. 왜 사용할까요?프록시는 어떤 목적으로 '대신'하느냐에 따라 ..

디자인패턴 - 퍼사드 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 퍼사드 패턴 (Facade)1. 퍼사드 패턴이란? 🏛️개념: 복잡한 서브시스템(Subsystem)을 더 쉽게 사용할 수 있도록, 단순하고 통합된 하나의 인터페이스(창구)를 제공하는 패턴입니다. 'Facade'는 프랑스어로 건물의 '정면'을 의미하며, 건물의 복잡한 내부 구조를 감추고 깔끔한 정면만 보여주는 것처럼 동작합니다.가장 좋은 예는 **홈시어터의 '통합 리모컨'**입니다. 영화를 보기 위해 TV 켜기, 앰프 켜고 모드 바꾸기, DVD 플레이어 켜기, 조명 낮추기 등 여러 기기를 복잡하게 조작해야 합니다. 퍼사드 패턴은 이 모든 과정을 '영화 보기' 버튼 하나로 묶어주는 통합 리모컨과 같습니다. 사용자는 버튼 하나만 누르면 되고, 그 뒤에서 일어나..

디자인패턴 - 데코레이터 패턴

JAVA로 구현하는 알고리즘과 디자인 패턴 공부: 데코레이터 패턴 (Decorator)1. 데코레이터 패턴이란? ☕개념: 주어진 객체를 수정하지 않고, 동적으로 새로운 기능을 추가할 때 사용하는 패턴입니다. 객체를 새로운 기능을 가진 다른 객체로 감싸서(Wrapping) 기능을 확장합니다.가장 대표적인 예는 커피 주문입니다.기본 아메리카노를 주문합니다. (이것이 원본 객체입니다)여기에 우유를 추가합니다. (우유 데코레이터가 아메리카노를 감쌉니다)다시 그 위에 휘핑 크림을 올립니다. (휘핑 크림 데코레이터가 우유를 감싼 아메리카노를 감쌉니다)각각의 '장식(데코레이터)'은 커피라는 본질을 바꾸지 않으면서 가격과 설명 같은 새로운 책임(기능)을 덧붙입니다.2. 왜 사용할까요?유연한 기능 확장: 상속을 사용하면..

728x90
반응형