1. 程式人生 > >Design Patterns 2: Builder

Design Patterns 2: Builder

將物件的構造過程抽象出來,使得相同的構造過程可以複用。

Each kind of concrete builder(ConcreteBuilder) class takes the mechanism for creating and assembling a complex object and puts it behind an abstract interface(Builder).

struct Builder
{
	virtual void BuildPart() = 0;
};

struct ConcreteBuilder1 : Builder
{
	void BuildPart() override { var = 100; }
	int var;
};

struct ConcreteBuilder2 : Builder
{
	void BuildPart() override { var = 100.; }
	float var;
};

struct Director
{
	Builder* builder;
	void Construct() { builder->BuildPart(); }
};

int main()
{
	auto director1 = new Director{ new ConcreteBuilder1 };
	auto director2 = new Director{ new ConcreteBuilder2 };
	director1->Construct();
	director2->Construct();
}