C++设计模式 模板模式跟建造者模式区别

本文通过代码示例介绍了C++中的模板模式和建造者模式。模板模式通过保护成员函数实现调用流程,子类实现细节。而建造者模式则由父类提供接口,子类实现具体构建过程,指挥者类负责创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模板模式

class Resume

{

protected: //保护成员

virtual void SetPersonalInfo() {}

virtual void SetEducation() {}

virtual void SetWorkExp() {}

public:

void FillResume()

{

SetPersonalInfo();

SetEducation();

SetWorkExp();

}

};

class ResumeA: public Resume

{

protected:

void SetPersonalInfo() { cout<<"A's PersonalInfo"<<endl; }

void SetEducation() { cout<<"A's Education"<<endl; }

void SetWorkExp() { cout<<"A's Work Experience"<<endl; }

};

class ResumeB: public Resume

{

protected:

void SetPersonalInfo() { cout<<"B's PersonalInfo"<<endl; }

void SetEducation() { cout<<"B's Education"<<endl; }

void SetWorkExp() { cout<<"B's Work Experience"<<endl; }

};

int main()

{

Resume *r1;

r1 = new ResumeA();

r1->FillResume();

delete r1;

r1 = new ResumeB();

r1->FillResume();

delete r1;

r1 = NULL;

return 0;

}

 

建造者模式

class Builder

{

public:

virtual void BuildHead() {}

virtual void BuildBody() {}

virtual void BuildLeftArm(){}

virtual void BuildRightArm() {}

virtual void BuildLeftLeg() {}

virtual void BuildRightLeg() {}

};

//构造瘦人

class ThinBuilder : public Builder

{

public:

void BuildHead() { cout<<"build thin body"<<endl; }

void BuildBody() { cout<<"build thin head"<<endl; }

void BuildLeftArm() { cout<<"build thin leftarm"<<endl; }

void BuildRightArm() { cout<<"build thin rightarm"<<endl; }

void BuildLeftLeg() { cout<<"build thin leftleg"<<endl; }

void BuildRightLeg() { cout<<"build thin rightleg"<<endl; }

};

//构造胖人

class FatBuilder : public Builder

{

public:

void BuildHead() { cout<<"build fat body"<<endl; }

void BuildBody() { cout<<"build fat head"<<endl; }

void BuildLeftArm() { cout<<"build fat leftarm"<<endl; }

void BuildRightArm() { cout<<"build fat rightarm"<<endl; }

void BuildLeftLeg() { cout<<"build fat leftleg"<<endl; }

void BuildRightLeg() { cout<<"build fat rightleg"<<endl; }

};

//构造的指挥官

class Director

{

private:

Builder *m_pBuilder;

public:

Director(Builder *builder) { m_pBuilder = builder; }

void Create(){

m_pBuilder->BuildHead();

m_pBuilder->BuildBody();

m_pBuilder->BuildLeftArm();

m_pBuilder->BuildRightArm();

m_pBuilder->BuildLeftLeg();

m_pBuilder->BuildRightLeg();

}

int main()
{
    FatBuilder thin;
    Director director(&thin);
    director.Create();
    return 0;
}
 

模板模式跟建造者模式的区别:

模板模式由父类实现调用过程,实现细节在子类中区分;成员函数(protected)

建造者模式父类提供接口,子类负责实现;具体实现流程由建造者类通过接口实现;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值