设计模式之建造者模式
2009-09-06 18:35
351 查看
class Product
{
public:
void Add(string part)
{
parts.push_back(part);
}
void show()
{
cout<<"--- Product builder ---"<<endl;
// for(int i = 0; i< parts.size(); ++i)
// cout<<parts[i]<<endl;
for(vector<string>::iterator iter = parts.begin(); iter != parts.end(); ++iter)
cout<<*iter<<endl;
}
private:
vector<string> parts;
};
class Builder
{
public:
virtual void BuilderPartA()=0;
virtual void BuilderPartB()=0;
virtual Product * GetResult()=0;
};
class ConcreteBuilder1 : public Builder
{
public:
ConcreteBuilder1()
{
product = new Product;
}
void BuilderPartA()
{
product->Add("Part A");
}
void BuilderPartB()
{
product->Add("Part B");
}
Product * GetResult()
{
return product;
}
private:
Product *product;
};
class ConcreteBuilder2 : public Builder
{
public:
ConcreteBuilder2()
{
product = new Product;
}
void BuilderPartA()
{
product->Add("Part X");
}
void BuilderPartB()
{
product->Add("Part Y");
}
Product * GetResult()
{
return product;
}
private:
Product *product;
};
class Director
{
public:
void Construct(Builder *builder)
{
builder->BuilderPartA();
builder->BuilderPartB();
}
};
int main()
{
Director *director = new Director;
Builder *b1 = new ConcreteBuilder1;
Builder *b2 = new ConcreteBuilder2;
director->Construct(b1);
Product *p1 = b1->GetResult();
p1->show();
director->Construct(b2);
Product *p2 = b2->GetResult();
p2->show();
cin.get();
return 0;
}
运行结果:
--- Product builder ---
Part A
Part B
--- Product builder ---
Part X
Part Y
转载的 都看看吧
{
public:
void Add(string part)
{
parts.push_back(part);
}
void show()
{
cout<<"--- Product builder ---"<<endl;
// for(int i = 0; i< parts.size(); ++i)
// cout<<parts[i]<<endl;
for(vector<string>::iterator iter = parts.begin(); iter != parts.end(); ++iter)
cout<<*iter<<endl;
}
private:
vector<string> parts;
};
class Builder
{
public:
virtual void BuilderPartA()=0;
virtual void BuilderPartB()=0;
virtual Product * GetResult()=0;
};
class ConcreteBuilder1 : public Builder
{
public:
ConcreteBuilder1()
{
product = new Product;
}
void BuilderPartA()
{
product->Add("Part A");
}
void BuilderPartB()
{
product->Add("Part B");
}
Product * GetResult()
{
return product;
}
private:
Product *product;
};
class ConcreteBuilder2 : public Builder
{
public:
ConcreteBuilder2()
{
product = new Product;
}
void BuilderPartA()
{
product->Add("Part X");
}
void BuilderPartB()
{
product->Add("Part Y");
}
Product * GetResult()
{
return product;
}
private:
Product *product;
};
class Director
{
public:
void Construct(Builder *builder)
{
builder->BuilderPartA();
builder->BuilderPartB();
}
};
int main()
{
Director *director = new Director;
Builder *b1 = new ConcreteBuilder1;
Builder *b2 = new ConcreteBuilder2;
director->Construct(b1);
Product *p1 = b1->GetResult();
p1->show();
director->Construct(b2);
Product *p2 = b2->GetResult();
p2->show();
cin.get();
return 0;
}
运行结果:
--- Product builder ---
Part A
Part B
--- Product builder ---
Part X
Part Y
转载的 都看看吧
相关文章推荐
- 23种设计模式之建造者模式
- 设计模式之建造者(Builder)模式
- java 设计模式-创建模式之建造者模式
- 设计模式笔记17:建造者模式(Builder Pattern)
- 设计模式之建造者模式
- 设计模式学习笔记(五):建造者模式【Builder Pattern】(三)问题引申
- 深入理解JavaScript系列(27):设计模式之建造者模式
- (设计模式)建造者模式
- 23种设计模式(4):建造者模式
- 设计模式之建造者模式
- 设计模式之建造者-Buider
- 增强可读性,易用性——设计模式之建造者模式(灵活使用继承和抽象类以及抽象函数和反射)
- 设计模式———建造者模式
- 胖虎白话学习设计模式之建造者设计模式(Builder)
- 【设计模式】好菜每回味不同 --- 建造者模式
- java-设计模式(创建型)-【建造者模式】
- 设计模式之----建造者模式
- c++设计模式(4)------建造者模式
- 深入理解JavaScript系列(27):设计模式之建造者模式
- 23种设计模式[4]:建造者模式