
Bridge 소개 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 하나의 계층 구조일 때보다 각기 나누었을 때 독립적인 계층 구조로 발전 시킬 수 있다. 적용 before => 챔피언과 스킨을 붙여서 만듬. 클래스 수가 챔피언 수 X 스킨 수만큼 늘어남 after => 브릿지 패턴으로 둘을 분리하여 효율적이게 됨. 장점

전략(Strategy) 패턴 소개 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴 컨텍스트에서 사용할 알고리즘을 클라이언트 선택한다. 적용 before => 행동 로직이 클래스 안에 박혀 있다. after => 행동을 바깥으로 분리해서 갈아끼울 수 있게 만든 것입니다. 장점 새로운 전략을 추가하더

컴포짓 패턴 그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴 클라이언트 입장에서 '전체'나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다. (Part-Whole Hierarchy) 적용 before Item: 부분, Bag: 전체 after => Item과 Bag을 같은 타입 Component로 묶는다. 
데코레이터 패턴 기존 코드를 변경하지 않고 부가기능을 추가하는 패턴 상속이 아닌 위임을 사용해서 보다 유연하게 부가 기능을 추가하는 것도 가능하다. 적용 Before After 장점 새로운 클래스를 만들지 않고 기존 기능을 조합할 수 있다. 컴파일 타임이 아닌 런타임에 동적으로 기능을

방문자(Visitor) 패턴 기존 코드를 변경하지 않고 새로운 기능을 추가 객체 구조는 그대로, 객체들에 대해 수행할 동작을 바깥으로 분리 더블 디스패치를 활용할 수 있다. 적용 객체 Circle Rectangle Triangle 객체들에 대한 작업 Phone에 출력 Watch에 출력 Pad에 출력 ...

책임 연쇄 패턴(Chain-of-Responsibility) 요청을 보내는 쪽(Sender)과 요청을 처리하는 쪽(Receiver)을 분리하는 패턴 핸들러 체인을 사용하여 요청을 처리한다. => 첫 사람이 보고 자기가 할 수 있는 일을 하고, 그다음 사람에게 넘기고 또 다음 사람이 이어서 처리하고 마지막 사람이 끝낸다는 구조 Chain = 사슬 처럼 연결 ...

퍼사드(Facade) 패턴 복잡한 서브 시스템 의존성을 최소화하는 방법 Facade : 건물 정면, 겉모습 => 내부는 복잡해도 겉은 간단한 입구 하나만 보이게 만듬. 클라이언트가 사용해야 하는 복잡한 서브 시스템 의존성을 간단한 인터페이스로 추상화 할 수 있다. 적용 before/Client.java 기본 정보 준비 누구한테, 누가, 어떤 메일 서...

플라이웨이드 패턴 객체를 가볍게 만들어 메모리 사용을 줄이는 패턴. Fly = 가볍게, weight = 무게를 => 객체를 가볍게 만들자 자주 변하는 속성(또는 외적인 속성, extrinsit)과 변하지 않는 속성(또는 내적인 속성, intrinsit)을 분리하고 재사용하여 메모리 사용을 줄일 수 있다. 적용 befor Character.java ...

중재자 패턴 여러 객체들이 소통하는 방법을 캡슐화하는 패턴 예제) 호텔 투숙객이 타월이 필요하면 청소팀에 문의하고, 저녁은 식당에 문의하고, 헬스장 청소도 직접 요청하는 등 이러면 모든 사람이 서로를 다 알아야 하는 불편함이 생김. 프론트 데스크에 말하면 다 해결하도록 함. before (모두가 서로를 직접 알고 있음)

옵저버 패턴 다수의 객체가 특정 객체 상태 변화를 감지하고 알림을 받는 패턴. 예제) '구독 알림' 좋아하는 유튜버의 새동영상이 올라오면 알림이 오는 것과 같음. => Subject가 자기를 구독한 모든 Observer에게 자동으로 알림을 뿌림 before ChatServer.java — 메시지를 주제별로 저장만 해두는

메멘토 패턴 캡슐화를 유지하면서 객체 내부 상태를 외부에 저장. **예제) '세이브 파일' 게임 하다가 보스로 돌아가듯. 객체의 현재 상태를 스냅샷으로 저장해뒀다가, 나중에 그 시점으로 되돌리는 패턴. 핵심 : Originator 원본, Memento 스냅샷, Caretaker 보관자** before Game.java —

상태 패턴 객체 내부 상태에 따라 객체의 행동이 달라지는 패턴 예제) 온라인 강의 플랫폼에서 강의의 상태 draft, published, private에 따라 처리가 달라짐 before OnlineCourse.java — enum으로 상태를 표현하고, 메서드마다 if-else로 분기 처리 DRAFT(초안): 아직