gpt의 세련됨이란 이런 것..!
덜 세련된 버전. 귀엽다

 

 

1. 생성 패턴 (객체 만들 때)

• 🧱 추상 팩토리: 부품 하나씩 사서 조립하면 브랜드 바뀔 때 다 꼬임 → "패키지 여행 세트 상품"을 고르듯, 관련된 세트 제품군을 한 번에 통째로 갈아 끼우게 만든다.
• 👷 빌더: 옵션이 너무 많아서 주문서 작성할 때 순서 밀리고 실수함 → 자동차 옵션 고르듯 "체크리스트 메서드"를 한 단계씩 누르며 안전하게 조립한다.
• 🏭 팩토리 메서드: 본사(상위 코드)에서 수제품 만들듯 객체 만들면 새 제품 나올 때마다 본사 벽을 부숴야 함 → 본사는 도안만 주고, "하청 공장(서브 클래스)"에 만들라고 시킨다.
• 🐑 프로토타입: 무거운 객체를 처음부터 새로 만드려면 힘 빠짐 → 복사기 대고 복사 버튼 누르듯 "기존 객체를 복사(Clone)"해서 쓴다.
• 👑 싱글턴: 너도나도 객체 만들어서 메모리 낭비하고 데이터 꼬임 → 마을에 우물 하나만 파두듯 딱 "하나만 만들어서 다 같이 공유"한다.

 


2. 구조 패턴 (클래스 조립할 때)

• 🔌 어댑터: 서드파티 코드 규격이 내 프로그램이랑 안 맞음 → 해외 갈 때 가져가는 "돼지코 변환 잭"을 끼워서 억지로 호환시킨다.
• 🌁 브리지: 기능이랑 구체적 부품이 엉겨 붙어서 리모컨 버튼 하나 바꿀 때마다 TV 전체를 고쳐야 함 → "리모컨(기능)"과 "TV(부품)" 사이에 선(다리)만 연결해 두고 서로 따로 발전하게 둔다.
• 🌿 컴퍼지트: 파일 하나 지울 때랑 폴더(파일 묶음) 지울 때 명령어를 다르게 쓰니 귀찮음 → 폴더든 파일이든 사용자 눈에는 똑같은 "클래스(아이템)"로 보이게 해서 일괄 처리한다.
• 🎀 데코레이터: 기능 하나 추가할 때마다 매번 자식 클래스 만들면 클래스가 수백 개 됨 → 에스프레소에 우유, 시럽 얹듯 "장식용 껍데기"로 알맹이를 계속 감싼다.
• 🏛️ 퍼사드: 내부 장치(엔진, 변속기 등)가 너무 복잡해서 운전자가 다 조작하려다 사고 남 → 운전자는 복잡한 속사정 몰라도 되게 "운전대와 페달(단순한 버튼 창구)"만 앞에 놔준다.
• 🪶 플라이웨이트: 똑같은 게임 캐릭터 수만 개 만들다가 컴퓨터 터짐 → 얼굴, 몸통 같은 고정 데이터는 "중앙 저장소에 하나만 두고 공유"하면서 좌표만 다르게 찍는다.
• 👤 프록시: 용량이 너무 큰 이미지나 보안 처리를 매번 원본 소환해서 하려니 부담됨 → "비서(대리인)"를 앞에 세워서 잔업(로딩 대기, 권한 체크)을 미리 처리하게 한다.

 

 

3. 행위 패턴 (기능과 역할을 나눌 때)

• ⛓️ 책임 연쇄: 고객 문의 들어왔는데 상담원 혼자 다 처리하려니 조건문(if)이 폭발함 → 내 선에서 안 되면 다음 사람에게 넘기는 "결재 라인 체인"을 만든다.
• ⌨️ 커맨드: 버튼 누르면 불 켜지는 기능을 버튼 안에 꽉 짜두니, 나중에 '예약 켜기'나 '실행 취소'를 못 함 → '불 켜기'라는 행위 자체를 "메모장(객체)에 적어서" 주고받는다.
• 🗣️ 인터프리터: 번역기 만들 때 문장 전체를 한 통으로 해석하려니 문법 바뀔 때 멸망함 → 주어, 동사, 목적어 등 "문법 요소 하나하나를 독립 클래스"로 쪼개서 조립한다.
• 🔄 반복자: 리스트, 트리, 맵 등 내부 구조가 다 달라서 꺼내 쓰는 방법도 제각각임 → 내용물이 어떻게 들어있든 무조건 다음 걸 꺼내주는 "표준 뷔페 집게(Iterator)"를 제공한다.
• 🧭 중재자: 멤버 10명이 서로 직접 사귀고 싸우느라 개판 됨(M:N) → 서로 직접 연락 금지하고 오직 "단톡방 방장(중재자)"을 통해서만 공지 띄우게 한다.
• 💾 메멘토: 게임 오버 되었을 때 되돌리고 싶은데 내부 능력치를 외부에 다 노출하면 해킹 위험 있음 → 주인공 비밀 데이터는 숨긴 채 "세이브 파일(스냅샷)"만 쏙 빼서 보관한다.
• 🔔 옵서버: 값이 바뀔 때마다 내가 일일이 다른 클래스들 찾아다니며 알려주기 귀찮음 → 내 채널에 "구독(알림 신청)"한 녀석들에게 유튜버처럼 자동으로 알림을 쏴준다.
• 🏃 상태: 로그인 상태, 로그아웃 상태일 때 버튼 동작이 달라서 if문이 지옥처럼 꼬임 → '로그인 객체', '로그아웃 객체'를 따로 만들고 "상태가 바뀔 때마다 칩 갈아 끼우듯" 교체한다.
• 🎯 스트래티지 (전략): 결제 수단(신용카드, 카카오페이 등) 바뀔 때마다 메인 코드를 다 고쳐야 함 → 결제 알고리즘을 부품화해두고 필요할 때마다 "전략(무기)만 슥 갈아 끼운다."
• 📋 템플릿 메서드: 라면 끓이기와 짜파게티 끓이기는 순서가 거의 똑같은데(물 끓이기 → 면 넣기 → 스프 넣기) 코드를 따로 짜니 중복됨 → 부모가 "전체 요리 순서(템플릿)"를 딱 박아두고, 스프 종류만 자식이 채우게 한다.
• 🏃‍♂️ 비지터: 직원 데이터 구조는 다 짜놨는데, 매번 '연봉 계산', '휴가 계산' 등 새로운 업무가 추가될 때마다 직원 클래스를 고치기 미안함 → 직원들은 가만히 있고, 외부에서 "세무사(방문자)"가 찾아와서 서류만 훑고 계산하게 한다.

+ Recent posts