
void setBoard(const std::string &board) { _board = board; }
void setDisplay(const std::string &display) { _display = display; }
virtual void setOs() = 0;
std::string param = "Computer Paramaters: \n";
param += "\tBoard: " + _board + "\n";
param += "\tDispaly: " + _display + "\n";
param += "\tOs: " + _os + "\n";
std::cout << param << std::endl;
class MacBook : public Computer{
virtual void setOs() override {
virtual void buildBoard(const std::string &board) = 0;
virtual void buildDisplay(const std::string &display) = 0;
virtual void buildOs() = 0;
virtual std::shared_ptr build() = 0;
class MacBookBuilder : public Builder{
MacBookBuilder() : _computer(new MacBook()) {}
void buildBoard(const std::string& board) {
_computer->setBoard(board);
void buildDisplay(const std::string& display) {
_computer->setDisplay(display);
std::shared_ptr build() {
std::shared_ptr _computer;
Director(Builder* builder) : _builder(builder) {}
void construct(const std::string& board, const std::string& display) {
_builder->buildBoard(board);
_builder->buildDisplay(display);
std::shared_ptr _builder;
Builder * builder = new MacBookBuilder();
std::unique_ptr director(new Director(builder));
director->construct("华硕主板", "三星显示器");
std::shared_ptr computer = builder->build();
computer->showParamaters();
