首页 > 代码库 > 建造者模式
建造者模式
建造者模式和工厂模式稍微有点像,但是建造者模式更适用与遵循一定的规则进行创建。例如,和美女乱搞,都要经过脱鞋,脱裤子,脱上衣这些流程,但是每个人脱的方式不一样,脱得顺序也不一样,适用于建造者模式。
代码如下:
#include <iostream> using namespace std; class Builder { public: Builder() {} virtual ~Builder() {} private: Builder(const Builder& build); Builder& operator = (const Builder& build); public: virtual void Create() = 0; virtual void OffShone() = 0; virtual void OffJacket() = 0; virtual void OffPants() = 0; }; class BuilderA : public Builder { public: BuilderA() {} ~BuilderA() {} private: BuilderA(const BuilderA& build); BuilderA& operator = (const BuilderA& build); public: void OffShone() { cout<< "A offshone" << endl; } void OffJacket() { cout << "A offjacket" << endl; } void OffPants() { cout<< "A offpants" << endl; } void Create() { OffPants(); OffShone(); OffJacket(); } }; class BuilderB : public Builder { public: BuilderB() {} ~BuilderB() {} private: BuilderB(const BuilderB& build); BuilderB& operator = (const BuilderB& build); public: void OffShone() { cout<< "B offshone" << endl; } void OffJacket() { cout << "B offjacket" << endl; } void OffPants() { cout<< "B offpants" << endl; } void Create() { OffShone(); OffPants(); OffJacket(); } }; class Director { public: Director(Builder* build) { build_ = build; } ~Director() { if (build_) { delete build_; build_ = NULL; } } private: Director(const Director& d); Director& operator = (const Director& d); public: void Create() { build_->Create(); } private: Builder* build_; };
#include "main.h" int main(int argc, char* argv[]) { Builder* build_a = new BuilderA(); Builder* build_b = new BuilderB(); Director* derector_a = new Director(build_a); Director* derector_b = new Director(build_b); derector_a->Create(); derector_b->Create(); }
建造者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。