[{"data":1,"prerenderedAt":232},["ShallowReactive",2],{"post-document:\u002Fbackend\u002Fjava\u002Foop\u002F2026\u002F08\u002F12\u002FCreational-Pattern\u002F":3},{"id":4,"title":5,"body":6,"categories":216,"date":220,"description":12,"extension":221,"image":222,"key_concepts":222,"last_modified_at":222,"legacyPath":223,"meta":224,"navigation":226,"part":222,"path":227,"published":226,"robots":222,"seo":228,"series":222,"stem":229,"strengths":222,"summary":222,"tags":230,"tradeoffs":222,"__hash__":231},"posts\u002Fposts\u002FBackend\u002FJAVA\u002Foop\u002FCreational Pattern.md","1. Singleton Pattern",{"type":7,"value":8,"toc":212},"minimark",[9,13,19,99,102,168,172,175,180,184,188,192,195,200,203,206,209],[10,11,12],"p",{},"Creational Pattern",[14,15,16],"blockquote",{},[10,17,18],{},"객체를 new로 생성하는 과정을 어떻게 더 유연하고 안전하게 관리할 것이가 다루는 디자인 패턴\n\"이 객체를 누가, 언제, 어떤 방식으로 생성할 것인가?\"",[20,21,22,38],"table",{},[23,24,25],"thead",{},[26,27,28,32,35],"tr",{},[29,30,31],"th",{},"패턴명",[29,33,34],{},"주요 목적, 역할",[29,36,37],{},"대표 예시 클래스",[39,40,41,57,71,85],"tbody",{},[26,42,43,47,54],{},[44,45,46],"td",{},"Singleton",[44,48,49,50,53],{},"단 하나의 인스턴스만 생성, 공유",[51,52],"br",{},"전역에서 하나의 객체만 필요할 때",[44,55,56],{},"Runtime, Logger 등",[26,58,59,62,68],{},[44,60,61],{},"Factory Method",[44,63,64,65,67],{},"객체 생성을 하위 클래스에서 담당",[51,66],{},"상위 클래스는 인터페이스만 제공, 하위 클래스가 생성 결정",[44,69,70],{},"Calendar.getInstance 등",[26,72,73,76,82],{},[44,74,75],{},"Abstract Factory",[44,77,78,79,81],{},"관련 객체 집합을 생성",[51,80],{},"객체 계열을 통일된 방식으로 생성",[44,83,84],{},"GUI Toolkit, DAO Factory 등",[26,86,87,90,96],{},[44,88,89],{},"Builder",[44,91,92,93,95],{},"복잡한 객체의 생성 과정 분리",[51,94],{},"객체의 생성 절차를 단계별로 분리 및 체이닝 지원",[44,97,98],{},"StringBuilder, Lombok Builder",[10,100,101],{},"쉽게 말하자면",[20,103,104,117],{},[23,105,106],{},[26,107,108,111,114],{},[29,109,110],{},"패턴",[29,112,113],{},"핵심 질문",[29,115,116],{},"핵심 개념",[39,118,119,132,144,156],{},[26,120,121,123,126],{},[44,122,46],{},[44,124,125],{},"객체를 몇 개 만들까?",[44,127,128],{},[129,130,131],"strong",{},"하나만 생성",[26,133,134,136,139],{},[44,135,61],{},[44,137,138],{},"객체 생성을 누가 결정할까?",[44,140,141],{},[129,142,143],{},"생성 책임 위임",[26,145,146,148,151],{},[44,147,75],{},[44,149,150],{},"관련 객체들을 어떻게 같이 만들까?",[44,152,153],{},[129,154,155],{},"제품군 생성",[26,157,158,160,163],{},[44,159,89],{},[44,161,162],{},"복잡한 객체를 어떻게 편하게 만들까?",[44,164,165],{},[129,166,167],{},"단계적 생성",[169,170,5],"h1",{"id":171},"_1-singleton-pattern",[10,173,174],{},"핵심",[14,176,177],{},[10,178,179],{},"프로그램 전체에서 객체를 딱 하나만 만들어 공유하는 패턴",[169,181,183],{"id":182},"_2-factory-method-pattern","2. Factory Method Pattern",[169,185,187],{"id":186},"_3-abstract-factory-pattern","3. Abstract Factory Pattern",[169,189,191],{"id":190},"_4-builder-pattern","4. Builder Pattern",[169,193,194],{"id":194},"결론",[14,196,197],{},[10,198,199],{},"객체 생성 로직과 객체 사용 로직을, 적절하게 분리하는 것이 목적",[10,201,202],{},"Singleton\n→ 하나만 만들어",[10,204,205],{},"Factory Method\n→ 네가 대신 만들어",[10,207,208],{},"Abstract Factory\n→ 관련된 것들을 세트로 만들어",[10,210,211],{},"Builder\n→ 하나씩 설정하면서 만들어",{"title":213,"searchDepth":214,"depth":214,"links":215},"",2,[],[217,218,219],"Backend","JAVA","oop","2026-08-12 17:47:59 +0900","md",null,"\u002Fbackend\u002Fjava\u002Foop\u002F2026\u002F08\u002F12\u002FCreational-Pattern\u002F",{"layout":225},"post",true,"\u002Fposts\u002Fbackend\u002Fjava\u002Foop\u002Fcreational-pattern",{"title":5,"description":12},"posts\u002FBackend\u002FJAVA\u002Foop\u002FCreational Pattern",[],"RbLkJRFT3lGu1vRn3Elhpf-5krx9kEI-cez1Fz9OCQo",1788744785145]