피자가게로 이해하는 디자인 패턴2026.05.21피자가게로 이해하는 디자인 패턴pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.21피자가게로 이해하는 디자인 패턴pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자는 처음부터 복잡한 시스템을 만들 생각이 없었다. 처음에는 메뉴 몇 개만 만들면 됐다. 그런데 손님은 커스텀 주문을 넣기 시작했고, 주방은 상태를 나눠야 했고, 결제와 배달앱과 알림이 하나씩 붙었다. 코드도 가게를 닮는다. 장사가 잘될수록 이상하게 더 쉽게 망가진다. 디자인…
7. Decorator — 토핑 추가할 때마다 클래스를 새로 만들 수 없다2026.05.217. Decorator — 토핑 추가할 때마다 클래스를 새로 만들 수 없다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.217. Decorator — 토핑 추가할 때마다 클래스를 새로 만들 수 없다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자에서 주문서를 객체로 만들자 취소와 재주문은 한결 편해졌다. 그런데 주문이 편해지자 손님들도 한결 편해졌다. 편해진 손님은 더 많은 요구를 한다. "치즈 추가요", "올리브도 추가요", "소스 많이요", "조금 더 바삭하게 구워주세요" 같은 요청이 주문대 위로 쌓이기 시작했다…
6. Command — 주문서를 객체로 만들면 취소도 재주문도 쉬워진다2026.05.216. Command — 주문서를 객체로 만들면 취소도 재주문도 쉬워진다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.216. Command — 주문서를 객체로 만들면 취소도 재주문도 쉬워진다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자의 시범 운영이 어느덧 일주일을 향해 가고 있다. 주방은 이제 제법 능숙하게 피자를 구워내고, 포스기(POS) 시스템도 팩토리 메서드 덕분에 다양한 지점 메뉴를 무리 없이 받아낸다. 하지만 시스템이 안정될수록 요구사항은 더 정교해지기 마련이다. 오늘은 주문 그 자체가 문제가…
5. Singleton — 주방은 하나다, 그리고 그게 전부가 아니다2026.05.215. Singleton — 주방은 하나다, 그리고 그게 전부가 아니다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.215. Singleton — 주방은 하나다, 그리고 그게 전부가 아니다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자의 시범 운영이 닷새째에 접어들자, 이제 주문 번호가 필요해졌다. 처음에는 대충 손으로 적어도 됐다. 하지만 주문이 늘어나자 직원들은 번호표를 붙이고, 주방은 그 번호를 기준으로 피자를 만들고, 손님은 그 번호를 보고 자기 피자를 찾아갔다. 장사가 너무 잘 되자 직원 하나가…
4. Prototype — 단골 손님은 항상 같은 걸 시킨다2026.05.214. Prototype — 단골 손님은 항상 같은 걸 시킨다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.214. Prototype — 단골 손님은 항상 같은 걸 시킨다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자에는 벌써 단골이 생겼다. 시범 운영 중인 가게에 단골이 생긴다는 건 좋은 일이다. 문제는 그 단골이 매번 꽤 복잡한 커스텀 피자를 주문한다는 점이다. 씬 도우, 토마토 소스, 모차렐라, 페퍼로니, 블랙 올리브, 웰던. 주문을 받을 때마다 Builder 체인을 다시 쓰다 보니…
3. Abstract Factory — 이탈리아 세트와 미국 세트, 재료부터 다르다2026.05.213. Abstract Factory — 이탈리아 세트와 미국 세트, 재료부터 다르다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.213. Abstract Factory — 이탈리아 세트와 미국 세트, 재료부터 다르다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자에 세트 메뉴가 생겼다. 피자만 팔던 시절에는 메뉴 하나만 잘 만들면 됐지만, 세트 메뉴는 피자와 사이드와 음료가 함께 움직인다. 이탈리아 세트에는 화덕 마르게리타, 브루스케타, 에스프레소가 들어가고, 미국 세트에는 팬 피자, 치킨 윙, 콜라가 들어간다. 여기까지는 아름답다.…
2. Builder — 생성자 인자가 일곱 개 넘으면 읽기 싫어진다2026.05.212. Builder — 생성자 인자가 일곱 개 넘으면 읽기 싫어진다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.212. Builder — 생성자 인자가 일곱 개 넘으면 읽기 싫어진다pizza-design-patterns-series#gof#object-oriented#design-patterns에이든 피자의 시범 운영 둘째 날, 역시 내 피자가 맛있었는지 어제 왔던 손님들이 또 왔다. 그런데 어제는 마르게리타와 페퍼로니 중 하나를 고르던 사람들이 이제는 도우를 바꾸고, 소스를 줄이고, 치즈를 더하고, 올리브는 빼고, 굽기는 바삭하게 해달라고 말하기 시작했다. 손님 입장에서는…
1. Factory Method — 메뉴가 늘어날수록 if-else가 길어진다2026.05.211. Factory Method — 메뉴가 늘어날수록 if-else가 길어진다pizza-design-patterns-series#gof#object-oriented#design-patterns2026.05.211. Factory Method — 메뉴가 늘어날수록 if-else가 길어진다pizza-design-patterns-series#gof#object-oriented#design-patterns아, 누가 개발자 인생의 끝은 치킨집이라 했던가. 나는 치킨 대신 피자가 더 좋은 관계로 피자집을 차리기로 했다. 그 이름도 에이든 피자! 장사를 시작하기는 했지만 정식 오픈이라 부르기에는 아직 민망하고, 그렇다고 집에서 냉동 피자를 데워 먹는 수준도 아니어서 일단 "시범 운영"이라는…