진행중인 프로젝트들
Simple Factory 예제
로봇0301
2022. 12. 14. 20:50
간단한 팩토리(simple factory)
Pizza.h
#pragma once #include
Pizza.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include "pizza.h" Pizza* Pizza::orderPizza(std::string pizza_type) { Pizza* var; if (pizza_type == "cheese") { var = new CheesePizza(); } else if (pizza_type == "greek") { var = new GreekPizza(); } else if (pizza_type == "pepperoni") { var = new PepperoniPizza(); } var->prepare(); var->bake(); var->cut(); var->box(); return var; } | cs |
이 코드에서는 바뀔 수 있는 부분과 바뀌지 않는 부분이 분리되지 않았다.
따라서 바뀌는 부분을 캡슐화한다.
Pizza.h
1 | cs |
Pizza.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include "pizza.h" PizzaStore::Pizza* PizzaStore::Pizza::orderPizza(std::string pizza_type) { Pizza* var; var = factory->create(pizza_type); var->prepare(); var->bake(); var->cut(); var->box(); return var; } PizzaStore::Pizza* SimplePizzaFactory::create(std::string pizza_type) { PizzaStore::Pizza * var = nullptr; if (pizza_type == "cheese") { var = new CheesePizza(); } else if (pizza_type == "Greek") { var = new GreekPizza(); } else if (pizza_type == "pepperoni") { var = new PepperoniPizza(); } return var; } | cs |
변경되는 코드와 변경되지 않는 코드를 분리했다.