Builder_Pattern - 8BitsCoding/RobotMentor GitHub Wiki
μ μ
볡μ‘ν λ¨κ³κ° νμν μΈμ€ν΄μ€ μμ±μ λΉλ ν¨ν΄μ ν΅ν΄μ ꡬνν μ μλ€.
볡μ‘ν λ¨κ³λ₯Ό κ±°μ³μΌ μμ±λλ κ°μ²΄μ ꡬνμ μλΈ ν΄λμ€μκ² λ겨주λ ν¨ν΄
μμλ‘ μ€λͺ
class Computer {
private:
string cpu;
string gpu;
string memory;
public:
Computer(string _cpu, string _gpu, string _memory) {cpu = _cpu; gpu = _gpu; memory = _memory;}
void setCPU(string _cpu) { cpu = _cpu; }
void setGPU(string _gpu) { gpu = _gpu; }
void setMEMORY(string _memory) { memory = _memory; }
string getCPU() {return cpu;}
string getGPU() {return gpu;}
string getMEMORY() {return memory;}
string printComputer() {
return cpu + gpu + memory;
}
}
int main() {
Computer * cp = new Computer("i7", "1060", "16G");
printf("%s \n", cp->printComputer());
}
νμ§λ§ μ»΄ν¨ν°μ μ±λ₯μ΄ λ³κ²½λ μ mainν¨μμμ νμ new Computer("i7" ... μ΄ λΆλΆμ λ³κ²½ν΄μ€μΌ νλ?? ν΄κ²°μ± μ μλκ°?
// λ€μκ³Ό κ°μ΄ μ μΈμ μ’ λ κΉλνκ² μ μΈκ°λ₯.
int main() {
ComputerFactory * factory = new ComputerFactory());
factory->setBlueprint(new LGgramBluePrint());
Computer * cp = factory->makeAndget();
// mainμμ μμ νλ κ²μ΄μλλΌ factoryμ€λΈμ νΈμμ λν
μΌν μ¬νμ μμ νλ€.
}
κ·Έλ λ€λ©΄ Factory ν΄λμ€λ μ΄λ»κ² ꡬμ±ν κΉ?
class BluePrint {
public:
virtual void setCpu();
virtual void setMemory();
virtual void setGpu();
};
class LGgramBluePrint : public BluePrint {
public:
// ꡬν
void setCpu();
void setMemory();
void setGpu();
private:
Computer* computer;
}
μ’ λ νμ€μ μΈ λΉλ ν¨ν΄ μ¬μ© μμ
int main() {
// μ°μ λΉλ ν¨ν΄μ μ¬μ©νλ μ΄μ λ μλμ κ°μ μ€μλ₯Ό λ°©μ§νκΈ° μν΄μμ΄λ€.
Computer * cp = new Computer("i7", "", "16G");
// mainμμ λͺ¨λ κ΄λ¦¬ν μ μ€μκ° λμ€κΈ° λ§λ ¨
Computer * cp = new ComputerBuilder();
cp->start();
cp->setCpu("i7");
cp->setRam("16G");
cp->Storage("256ssd")
cp->build();
// λ€μκ³Ό κ°μ΄ νκ³ μΆλ€
return 0;
}
class ComputerBuilder {
private:
Computer * computer;
ComputerBuilder() {
computer = new Computer("default", "default", "default");
}
public:
static ComputerBuilder start() {
return new ComputerBuilder();
}
// getter, setter
}