another builder

来源:互联网 发布:大阪大学知乎 编辑:程序博客网 时间:2024/05/06 15:43
#ifndef _ANOTHER_BUILDER_H_#define _ANOTHER_BUILDER_H_class builder;class Product{public:Product ();void show ();private:friend class Builder;int m_part1;int m_part2;int m_part3;int m_part4;int m_part5;};class Builder{public:Builder* create ();Builder* cpart1 (int a);Builder* cpart2 (int a);Builder* cpart3 (int a);Builder* cpart4 (int a);Builder* cpart5 (int a);Product* result ();private:Product* m_pro;};#endif

#include "builder.h"#include <iostream>using namespace std;// class ProductProduct::Product (){m_part1 = -1;m_part2 = -1;m_part3 = -1;m_part4 = -1;m_part5 = -1;}void Product::show (){cout<<"m_part1 == "<<m_part1<<endl;cout<<"m_part2 == "<<m_part2<<endl;cout<<"m_part3 == "<<m_part3<<endl;cout<<"m_part4 == "<<m_part4<<endl;cout<<"m_part5 == "<<m_part5<<endl;}// class BuilderBuilder* Builder::create (){m_pro = new Product();return this;}Builder* Builder::cpart1 (int a){m_pro->m_part1 = a;return this;}Builder* Builder::cpart2 (int a){m_pro->m_part2 = a;return this;}Builder* Builder::cpart3 (int a){m_pro->m_part3 = a;return this;}Builder* Builder::cpart4 (int a){m_pro->m_part4 = a;return this;}Builder* Builder::cpart5 (int a){m_pro->m_part5 = a;return this;}Product* Builder::result (){return m_pro;}int main () {Builder builder;Product* pro = builder.create()\->cpart1(2)\->cpart2(3)\->cpart3(5)\->cpart4(6)\->cpart5(7)\->result();pro->show ();delete pro;return 0;}

原创粉丝点击