객체 생성 작업을 대신해줄 클래스를 추가하는 패턴
복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
객체 생성이 복잡하거나 여러 개의 추가 작업이 필요한 경우 유용함
#include
class yh_builder { protected: Item* item; public: Item getItem(){ return *item; } void createItem(){ item = new Item(); } virtual void buildSword() = 0; virtual void buildarmor() = 0; };
class metalItemBuilder : public yh_builder { public: void buildSword(){ item->setSword(“metalSword”); } void buildarmor(){ item->setArmor(“metalArmor”); } };
class blackSmith { private: yh_builder builder; public: void setItem(yh_builder itemBuilder){ builder = itemBuilder; } Item getItem(){ return builder->getItem(); } void constructure(){ builder->createItem(); builder->buildarmor(); builder->buildSword(); } }; </source>
int main() { blackSmith *smith = new blackSmith(); metalItemBuilder *metal = new metalItemBuilder(); smith->setItem(metal); smith->constructure();
Item i = smith->getItem();
i.printItem();
return 0; }
</source>