`
tailorcai
  • 浏览: 93738 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

用模板简化factory的实现

F# 
阅读更多
// test-object-create-template.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <boost\ptr_container\ptr_vector.hpp>
#include <iostream>
#include <windows.h>

using namespace std;

class BASE : boost::noncopyable
{
public:
	virtual      ~BASE()   {}
};

class T1 : public BASE{
public:
	T1() {
		cout << "T1 created\n";
	}
	virtual ~T1() {
		cout << "T1 destroied\n";

	}
};

class T2 : public BASE{
public:
	T2() {
		cout << "T2 created\n";
	}
	virtual ~T2() {
		cout << "T2 destroied\n";
	}
};

class Factory {
public:
	boost::ptr_vector<BASE> ptr_set;
	Factory() {

	}
	template<class T>
	T* get() {
		static T* g_ptr = NULL;
		if( !g_ptr ) {
			g_ptr = new T();
			ptr_set.push_back( g_ptr );
		}
		return g_ptr;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	{
		boost::ptr_vector<BASE> ptr_set;
		ptr_set.push_back( new T1);
		ptr_set.push_back( new T2);
	}
	{
		Factory f;
		T1* t1 = f.get<T1>();
		T2* t2 = f.get<T2>();
		T1* t3 = f.get<T1>();

		assert( f.ptr_set.size() == 2);

	}
	//delete t1;
	//delete t2;
	Sleep(1000);
	return 0;
}


分享到:
评论

相关推荐

    Symbol Factory 2.0 工控画图软件

    同时,软件还允许用户将常用图形保存为模板,以便后续重复使用,提高了工作效率。 在实际应用中,Symbol Factory 2.0在电气工程、自动化技术、机械设计等多个领域都有广泛的应用。例如,在绘制电气原理图时,工程师...

    Setup.Factory9

    2. **模板与示例**:新手开发者可以参考这些预设的安装项目,学习如何配置和使用工具。 3. **文档**:包括帮助文件、用户手册等,为用户提供详细的操作指南和常见问题解答。 4. **库文件**:包含了Setup.Factory9...

    Setup Factory安装程序制作工具v9.03绿色版

    使用Setup Factory,用户可以定制安装界面,包括选择图标、背景图像、按钮布局等,以实现个性化和品牌化。此外,它支持添加自定义脚本,可以利用内置的语言(类似VBScript)控制安装过程中的各种逻辑,如检查系统...

    FACTORY IO代码资源PLC端项目资源S7-1200_V14.rar

    这个资源包"FACTORY IO代码资源PLC端项目资源S7-1200_V14.rar"包含了专门针对西门子S7-1200系列PLC的编程模板和实例,为学习者提供了宝贵的实践平台。 S7-1200是西门子推出的一款小型PLC(可编程逻辑控制器),它...

    Symbol Factory 2.0.138

    这款软件的一大特点是无需安装,用户可以直接使用,大大简化了操作流程。 在工控软件设计中,符号和图形的制作通常是耗时且需要专业技能的工作。Symbol Factory 2.0.138解决了这一问题,它包含了大量预设的、高质量...

    Setup Factory 9.0.1汉化版

    Setup Factory的核心功能在于简化安装程序的创建流程。通过其直观的图形界面,用户可以添加项目文件,设定安装路径,自定义启动画面,以及创建卸载程序等。此外,它还支持多种类型的安装包,包括Windows Installer ...

    CodeSmith模板(抽象工厂版)

    在本模板中,`AbstractFactory.cst`可能包含了定义抽象工厂的代码模板,用于创建不同类型的对象实例,如数据访问层(DAL)、业务逻辑层(BLL)等。这种模式使得系统可以在不修改现有代码的情况下添加新的产品家族。 ...

    IndigoRose Setup Factory v9.0.1.0汉化注册版

    1. **用户界面定制**:Setup Factory 提供了多种预设的界面模板,也可以自定义界面的色彩、字体、按钮样式等,以符合企业的品牌形象。同时,它可以支持多语言,方便制作国际化安装程序。 2. **脚本编写**:除了图形...

    Flash Gallery Factory_v5.2.0汉化绿色版_下半部

    本软件已经汉化为中文版本,便于中国用户操作使用,同时提供绿色版,无需安装,解压即用,大大简化了用户的使用流程。 Flash Gallery Factory是一款专业的Flash相册制作工具,它集合了多种设计模板和特效,让用户...

    android sax解析xml模板源码下载

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,用于存储和传输数据。...这个模板简化了开发流程,提高了开发效率,尤其对于初学者来说,是一个很好的学习和参考资源。

    setup Factory发布.net2.0的软件

    ### 使用Setup Factory发布.NET 2.0的软件 在软件开发与部署的过程中,为了确保应用程序能够在目标计算机上正常运行,通常需要对环境进行相应的配置。本文将详细介绍如何使用Setup Factory来发布.NET 2.0的应用程序...

    带有抽象工厂的Codesmith模板

    用户可能需要结合"使用说明.txt"来理解和使用这个"Type"文件,以实现对抽象工厂模板的定制化。 总的来说,这个压缩包提供了一种使用Codesmith工具来生成C#代码的高效方式,特别是对于那些需要遵循抽象工厂设计模式...

    3D Text Factory[1]

    总的来说,3D Text Factory插件是Photoshop用户提升文字设计维度的必备工具,它提供了丰富的3D文字创作功能,简化了设计流程,提高了工作效率。配合其他实用工具和资源,以及详细的使用说明,用户可以在更广阔的创意...

    springboot+drools动态模板引擎

    SpringBoot作为一个轻量级的Java开发框架,简化了Spring应用的初始化和配置,使得开发过程更加高效。而Drools则是一个强大的规则引擎,它允许我们在运行时执行基于业务规则的决策,而无需修改代码。 在SpringBoot...

    ae模板 体育俱乐部

    【标题】"ae模板 体育俱乐部" 是一款专为体育类项目设计的After Effects(简称AE)模板。...同时,了解和掌握AE的基础操作以及插件使用方法,将有助于更好地定制和调整模板,实现个性化的视频创作。

    PyPI 官网下载 | django-mail-factory-0.1.tar.gz

    它使用Python编写,旨在简化Web开发过程,提供高性能、安全性和易于维护的特性。Django的特色包括内置的ORM(对象关系映射),用于数据库操作,以及一套强大的模板系统,用于生成HTML和其他格式的文档。 **django-...

    IBM WebSphere Portlet Factory

    2. **模板化设计**:支持使用预定义模板快速搭建 Portlet 框架,简化了开发过程。 3. **集成测试与调试工具**:内置的测试框架允许开发者在真实环境中模拟运行 Portlet,并对其进行调试。 4. **代码生成器**:自动...

    setupfactory

    总之,SetupFactory是软件开发者的重要工具,它简化了创建可靠、专业安装程序的过程,让开发者能够专注于软件本身的功能开发,而非安装过程的复杂细节。通过学习和掌握SetupFactory,你可以为用户提供更加流畅和一致...

    PyPI 官网下载 | aws-service-catalog-factory-0.42.0.tar.gz

    1. **模板化创建**:使用YAML或JSON格式的模板,用户可以定义服务目录产品,包括资源、权限和依赖关系等。 2. **自动化部署**:通过调用AWS SDK,该工具可以自动创建和更新服务目录产品,减少了手动操作的复杂性和...

    springboot的实现word文档下载.zip

    通过以上步骤,我们就成功地实现了Spring Boot应用中使用Freemarker动态生成并提供Word文档下载的功能。这个示例展示了Spring Boot的灵活性以及与Freemarker集成的便利性,使得动态生成复杂格式的文档变得更加简单。...

Global site tag (gtag.js) - Google Analytics