• 设计模式之建造者模式(Builder)


    建造者模式原理:建造模式主要是用于产生对象的各个组成部分,而抽象工厂模式则用于产生一系列对象,建造者模式而且要求这些对象的组成部分有序。

    代码如下:

    #include <iostream>
    using namespace std;
    
    class Builder
    {
    public:
    	virtual void buildHead(){}
    	virtual void buildBody(){}
    	virtual void buildLeftArm(){}
    	virtual void buildRightArm(){}
    	virtual void buildLeftLeg(){}
    	virtual void buildRightLeg(){}
    };
    class BuilderFat:public Builder
    {
    public:
    	virtual void buildHead(){cout << "fat head" <<endl;}
    	virtual void buildBody(){cout << "fat Body" << endl;}
    	virtual void buildLeftArm(){cout << "fat Left Arm" <<endl;}
    	virtual void buildRightArm(){cout << "fat Right Arm" <<endl;}
    	virtual void buildLeftLeg(){cout << "fat Left Leg" <<endl;}
    	virtual void buildRightLeg(){cout << "fat Right leg" <<endl;}
    };
    
    class BuilerThin:public Builder
    {
    public:
    		virtual void buildHead(){cout << " thin head" <<endl;}
    	virtual void buildBody(){cout << "thin Body" << endl;}
    	virtual void buildLeftArm(){cout << "thin Left Arm" <<endl;}
    	virtual void buildRightArm(){cout << "thin Right Arm" <<endl;}
    	virtual void buildLeftLeg(){cout << "thin Left Leg" <<endl;}
    	virtual void buildRightLeg(){cout << "thin Right leg" <<endl;}
    };
    
    class Director
    {
    public:
    	Director(Builder *ptmp = NULL):pBuilder(ptmp)
    	{
    		
    	}
    	void createPerson()
    	{
    		pBuilder->buildHead();
    		pBuilder->buildBody();
    		pBuilder->buildLeftArm();
    		pBuilder->buildRightArm();
    		pBuilder->buildRightArm();
    		pBuilder->buildLeftLeg();
    		pBuilder->buildRightLeg();
    	}
    private:
    	Builder* pBuilder;
    };
    
    int main()
    {
    	BuilderFat fat;
    	Director *pDirector = new Director(&fat);
    	pDirector->createPerson();
    	delete pDirector;
    	return 0;
    }
    
  • 相关阅读:
    获取子进程的是否在线
    python基础知识(二)
    Linux入门50指令
    LInux升级Python版本2.7.11所遇问题汇总
    java开发(1)
    winfrom 水晶报表制作
    asp.net Dock布局开发设置
    winform 窗体最大化事件
    C# 委托于跨线程异步调用
    asp.net-html图片的上传
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/3203305.html
Copyright © 2020-2023  润新知