zoukankan      html  css  js  c++  java
  • 设计模式生成器实现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;
    }
    
    
  • 相关阅读:
    Adobe官方推荐的ActionScript的最佳做法和编码约定
    从Array extends 时要使用 dynamic 关键字
    java本质——内存分布
    函数参数传递
    AS3.0连接FMS2.0
    C#序列化和反序列化代码
    XmlSerializer 对象的Xml序列化和反序列化
    ASP.NET2.0服务器控件之Render方法
    加密技术在企业数据安全中的应用
    IEnumerable IEnumerator 接口
  • 原文地址:https://www.cnblogs.com/newwy/p/1855200.html
Copyright © 2011-2022 走看看