Link Search Menu Expand Document
  • 객체 생성 작업을 대신해줄 클래스를 추가하는 패턴

  • 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴

  • 객체 생성이 복잡하거나 여러 개의 추가 작업이 필요한 경우 유용함

#include class Item { private: char* sword; char* armor; public: void setSword(char* swordType) { sword = swordType; } void setArmor(char* armorType){ armor = armorType; } void printItem(){ printf("%s\n",sword); printf("%s\n", armor); } };

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-&gt;getItem();
i.printItem();

return 0; }

</source>