• 设计模式生成器实现C++


    /*********************************
    *设计模式--生成器实现
    *C++语言
    *Author:WangYong
    *Blog:http://www.cnblogs.com/newwy
    ********************************/
    #include <iostream>
    using namespace std;
    class Product
    {
    	public:
    	Product(){cout<<"return a product"<<endl;}
    	~Product(){}
    	void ProducePart(){cout<<"build part of product"<<endl;}
    }; 
    class ProductPart
    {
    	public:
    	ProductPart(){cout<<"Build part of product"<<endl;}
    	~ProductPart(){}
    	
    	ProductPart* BuildPart(){return new ProductPart;}
    };
    
    class Builder 
    {
    	public:
    	virtual ~Builder(){};
    	virtual void BuilderPartA(const string & buildpara) = 0;
    	virtual void BuilderPartB(const string & buildpara) = 0;
    	virtual void BuilderPartC(const string & buildpara) = 0;
    	virtual Product * GetProduct() = 0;
    };
    
    class ConcreteBuilder:public Builder
    {
    	public:
    	ConcreteBuilder(){}
    	~ConcreteBuilder(){}
    	void BuilderPartA(const string & buildpara){cout<<"step:buildparaA.."<<buildpara<<endl;}
    	void BuilderPartB(const string & buildpara){cout<<"step:buildparaB.."<<buildpara<<endl;}
    	void BuilderPartC(const string & buildpara){cout<<"step:buildparaC.."<<buildpara<<endl;}
    	Product * GetProduct();
    	
    };
    Product* ConcreteBuilder:: GetProduct()
    {
    	BuilderPartA("pre defined");
    	BuilderPartB("pre defined");
    	BuilderPartC("pre defined");
    	return new Product();
    }
    class Director
    {
    	public:
    	Director(Builder *bld){_bld = bld;}
    	~Director(){}
    	void Constructor();
    	private:
    	Builder *_bld;
    };
    void Director::Constructor()
    {
    	_bld->BuilderPartA("user defined");
    	_bld->BuilderPartB("user defined");
    	_bld->BuilderPartC("user defined");
    }
    int main()
    {
    	Director * d = new Director(new ConcreteBuilder());
    	d->Constructor();
    	return 0;
    }
    
    
  • 相关阅读:
    JavaScript----数组方法
    JavaScript----数组
    JavaScript----Array.foreach()
    JavaScript----数字及数字方法
    JavaScript----函数,对象及字符串方法
    设计模式@第5章:单例设计模式
    设计模式@第4章:设计模式概述
    设计模式@第3章:UML 类图
    部署方案@常用软件的安装
    应用框架@SpringBoot
  • 原文地址:https://www.cnblogs.com/newwy/p/1855200.html
Copyright © 2020-2023  润新知