自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

转载 qt 实现单例

头文件:class ConnectionManager { public:     static ConnectionManager *instance();};实现文件:Q_GLOBAL_STATIC(ConnectionManager, connectionManager) ConnectionManager *ConnectionManager::instan

2014-02-11 09:12:03 1277

转载 侃中介者模式(Mediator)

侃中介者模式作用:       用一个中介对象来封装一系列的对象操作。中介者使各对象不需要显式地相互交互,从而使其耦合松散,而且可以独立地改变它们之间的交互。正文:       中介者模式是一个简单易用的模式。也许很多人在实际的项目中都已经用到过了,只是不知道它就是中介者模式。它把多对多的交互变成了一对多的交互,从而简化的交互,理清了思路。       让我们来看个例子。

2013-04-27 21:01:42 546

转载 消息映射深度探索(5):总结

转自:http://blog.csdn.net/hjsunj/article/details/2028597孰优孰劣上面我们讨论了实现消息映射的两种方案:1. 使用消息映射表2. 使用虚函数在效率上我们可以看出前者胜出,内存使用上后者胜出(前提是后者不使用查找表替换switch...case)。所以看其来大家各有优劣。使用消息映射表必然要使用宏,除非事先

2013-04-27 20:58:52 490

转载 消息映射深度探索(4):职责链模式 - 使用虚函数替换映射表

转自:http://blog.csdn.net/hjsunj/article/details/2028597下面我们将介绍另一种实现消息映射的方式:职责链模式#include #include #include #define PRINT( msg ) { std::cout #define FUNC( func ) void func() { PRINT( #fu

2013-04-27 20:58:17 633

转载 消息映射深度探索(3):使用宏简化操作

转自:http://blog.csdn.net/hjsunj/article/details/2028597消息映射网的建立可以用宏定义出来,以简化派生类的操作:#include #include #include #define PRINT( msg ) { std::cout #define FUNC( func ) void func() { PRINT( #

2013-04-27 20:57:45 580

转载 消息映射深度探索(2):MFC的做法 - 使用消息映射表

转自:http://blog.csdn.net/hjsunj/article/details/2028597在MFC被成功做出来之前,一个最简单的想法就是使用虚函数,为每个消息定制一个虚函数,下面是个可能的实现:#include #include #include #define PRINT( msg ) { std::cout #define FUNC( func

2013-04-27 20:56:53 549

转载 消息映射深度探索(1):基础面

转自:http://blog.csdn.net/hjsunj/article/details/2028597消息映射这项技术,给消息横向(多个类对象)或纵向(继承树)流动的机会。此技术最初之发展动机是为了简化win32程序的消息处理过程,后来也被应用到网络程序的消息处理。一旦某个消息到达win32消息处理函数,此函数就会 使用一个switch...case映射网将此消息映射至相应处理函

2013-04-27 20:56:02 522

原创 简单单体模板类的实现(非线程安全)

直接上代码#ifndef _SINGLETON_H_#define _SINGLETON_H_template class CSingleton{public: static T *instance() { static T *_instance = NULL; if (_instance == NULL) _instance = new

2013-04-27 20:54:06 679

转载 以查找表取代switch...case

转自:http://blog.csdn.net/hjsunj/article/details/2028597传统的以多态取代switch...caseMartin Flower的著作《重构》告诉我们应该以多态取代switch...case,比如一个经典的Shape绘图的例子:void Draw( Shape* shape ) {    switch( shape.type

2013-04-27 19:53:39 923

转载 工厂方法(Factory Method)之追根究底

转自:http://blog.csdn.net/hjsunj/article/details/2028597 简介工厂方法,通常又被称作虚构造函数,给一个ID,就可以产出一个对象。了解设计模式的人都知道这样一份臭名昭著的实现:// ----------------------------------------------------------------------

2013-04-27 19:51:44 544

原创 工厂模式的模板实现

转载请注明:http://blog.csdn.net/lclflash源码面前了无秘密#ifndef _ELEMENTFACTORY_H_#define _ELEMENTFACTORY_H_#include #include class IElement;class IElementCreator{public: virtual IElement* create()

2013-04-27 14:05:59 721

转载 DynObj - C++ Cross Platform Plugin Objects

By Arne Steinarson, 27 Sep 2007   4.95 (32 votes) Download DynObj demo - 241.8 KBDownload DynObj source - 614.5

2013-04-26 23:07:27 1821

转载 Simple Plug-in Architecture in Plain C

IntroductionThis article explains how to write an application using architecture that supports plug-ins. We would be doing this using plain C. The concepts that are explained can be used to implemen

2013-04-26 23:06:49 869

转载 Building Your Own Plugin Framework

Building Your Own Plugin FrameworkA cross-platform plugin framework for C/C++Dr. Dobb's - November 25, 2007Gigi SayfanFrom ddj.comGigi Sayfan specializes in cross-platform object-ori

2013-04-26 23:03:43 2117

原创 POCO Universal Plug and Play

Universal Plug and PlayA modular and extensible C++ framework for implementing UPnP™ capable devices and applications. Based on the POCO C++ Libraries and the Applied Informatics Remoting framew

2013-04-26 23:01:25 904

转载 C++编写动态插件应注意的问题

C++编写动态插件应注意的问题   2012-02-13 11:30:32|  分类: VC++ & MFC|字号 订阅1- 插件导出函数设计成C形式的也就是在函数前加 extern "C",这样保证动态连接的时候不会出现找不到名字的情况. 2- 一定要保证代码绝缘,中间接口一定要传递NATURAL类型或者纯虚指针,否则会因为一些细微的类

2013-04-26 22:56:13 656

转载 C++ 插件框架 Pluma Framework

Pluma 是一个开源的C++插件管理框架,以助于在应用程序中动态载入DLL而无需在意内部实现,它是轻量级、简化设计的。主要特性有:A 高品质:    面向对象    跨平台;    易于使用;    容易集成;B 富功能:    动态载入插件(DLL);    使用工厂模式(Factory Pattern);    插件版本控制

2013-04-26 22:54:27 6446

转载 插件式设计的架构模型与实例

插件式设计的架构模型与实例----Do not call us, we will call you  转载时请注明出处:http://blog.csdn.net/absurd插件式设计近年来非常流行,其中eclipse起了推波助澜的作用,提到插件式就会不由自主的想到eclipse。其实插件式设计并不是什么新事物,早在几十年前就有了。像X Server就是基于插件式设计的

2013-04-26 22:51:38 973

转载 C++插件机制的一种实现方法(对象工厂)

背景在我们的实际开发过程中,经常会开发一些插件,比较常见的例子如:给你 DataHandler,它是一个抽象类,提供一些数据操作的接口,然后插件开发者就需要继承DataHandler,并按需求实现对应的接口,将其作为插件,编译到最终的二进制程序中,最后通过配置文件指定生效该插件。帮助1234567

2013-04-26 22:49:30 1898

转载 用C++实现插件体系结构

本文讨论一种简单却有效的插件体系结构,它使用C++,动态链接库,基于面向对象编程的思想。首先来看一下使用插件机制能给我们带来哪些方面的好处,从而在适当时候合理的选择使用。1. 增强代码的透明度与一致性:因为插件通常会封装第三方类库或是其他人编写的代码,需要清晰地定义出接口,用清晰一致的接口来面对所有事情。你的代码也不会被转换程序或是库的特殊定制需求弄得乱七糟。2. 改善工程

2013-04-26 22:43:11 747

转载 构建自己的C/C++插件开发框架(四)——核心层设计和实现

上面一篇文章大致描述了一下插件开发框架整体结构。这篇描述一下核心层的设计和实现。至于核心层的设计,我想借鉴 一下微内核的思想。核心层只负责实现下面几个功能:1、  插件的加载,检测,初始化。 2、  服务的注册。 3、  服务的调用。 4、  服务的管理。 插件的加载,检测,初始化 插件的加载利用linux共享库的动态加载技术。具体的方法可以看一下IBM网站的一

2013-04-26 22:41:35 735

转载 构建自己的C/C++插件开发框架(三)——总体结构

几天为了设计插件开发框架,尝试用了一下发散思维来思考问题。中间看过依赖注入,AOP(面向方面编程),以及契约式设计等。虽然有些工具无法直接使用,但是这些思想还是可以借鉴的,比如依赖注入,契约式设计。至于AOP,和工具相关性较大,虽然思想不错,但是无法直接在C++中使用。我设计的插件间的依赖不是通过接口实现的,而是通过插件间的数据(信元流)。而信元流的检测可以使用契约来检查。插件开发

2013-04-26 22:41:02 617

转载 构建自己的C/C++插件开发框架(二)——总体功能

在这一系列的上一个文章中,介绍了构建C/C++插件开发框架的初步设想,下面我会一步步的向下展开,来实现我的这个设想。今天主要谈一下我对这个框架的功能认识,或是期望。昨天看了一篇关于持续集成能力成熟度模型 的一篇文章,受此启发,我对此框架的认识渐渐清晰。这个框架可以当做我们公司底层产品(交换机,资源服务器等)的基础设施。上层基于java开发的产品可以直接在OSGI上开发。 核心功能:

2013-04-26 22:40:31 585

转载 构建自己的C/C++插件开发框架(一)——初步设想

最近一直在学习OSGI方面的知识。买了一本《OSGI原理和最佳实践》,可是还没有到。遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的。可惜我们公司目前主要的开发语言还是c和c++,即便是引进OSGI,所得的好处范围有限。而我对松散耦合的模块化开发向往已久。查了一下OSGI对C++支持的好像是有一个开源项目,不过好像应用范围很小。而SCA标准中是有对C++实现模型的支持的,

2013-04-26 22:40:05 725

转载 linux下C++ 插件(plugin)实现技术

应用程序中使用插件技术,有利于日后的版本更新、维护(比如打补丁)和功能扩展,是一种很实用的技术。其最大的特点是更新插件时无需重新编译主程序,对于一个设计良好的应用系统而言,甚至可以做到业务功能的在线升级。本文介绍了linux下用C++实现插件的一个简单实例,希望能对大家有所启发。为了能做到更新插件时无需重新编译主程序,要求主程序中定义的接口是定死的,而接口的实现被放到了具体的插件中,这样主

2013-04-26 22:37:51 772

转载 UNIX下C++实现动态载入对象

VC里面实现动态对象载入已经不是什么新鲜事情了,很多的plug-in技术就是例子。Unix下,通过动态载入so获得一个对象也不是什么难事,不过对这个对象的管理就是一件比较麻烦的事情了。一般的需求如下:  有class TMyObj,准确说TMyObj应该是一个接口,根据不同具体情况会有不同的实现,例如 TMyObj1、TMyObj2等等……而这些TMyObj1和TMyObj2分别保存在不同的s

2013-04-26 22:37:07 555

转载 轻量级C++插件框架 x3py 可以用了

(推荐)X3PY: https://github.com/rhcad/x3py  Doc: https://github.com/rhcad/x3py/wiki(内容较多)对x3c框架进行大量简化重构而成,使用方法类似于x3c,调用关系和文件依赖关系更简单直接,增加了与Python、Perl、Java、C#等集成开发的功能。在下列平台测试通过:         Wind

2013-04-26 22:32:45 1569

转载 Qt插件机制的学习

Mesh Deformer的架 构若想参照OpenFlipper来实现,首先需要了解Qt plugin system的结构以及如何编写qt plugins.以下摘抄了Qt文档中的部分内容(只与自己想要实现的功能相关的内容)The Lower-Level API: Extending Qt ApplicationsNot only Qt itself but also Qt

2013-04-26 22:31:14 758

转载 Qt 插件学习(二)

接前面的Qt插件学习(一),继续学习插件的 lower level api这次,直接写个小例子吧:接口程序要能感知插件,需要程序和插件共同遵守某种规则。于是定义一个共同的接口//mathinterface.h#include class MathInterface{public:virtual ~MathInterface() {}virtu

2013-04-26 22:28:55 827

转载 Qt 插件学习(一)

插件是什么注意:这儿暂时不考虑静态插件(潜意识中总觉得它根本就不算插件)。插件是一个动态库(共享库)。动态库是一个独立的文件中的独立模块,可被多个程序访问。先看动态库的两种用法1. 程序链接时指明动态库这时程序中包含相应的头文件,编译时指定头文件路径,对于qmake来说:LIBS += -L/path1/path2/.../ -labcdIN

2013-04-26 22:28:11 804

转载 QT中插件分析

QT有着独特的插件管理方法便于使用,调理清晰.完全可以替代WIN32下的动态库,静态库.不过,QT也支持动态库和静态库加载.见QLibrary,最终,QLibrary调用WIN32下的LoadLibrary,GetProcAddress函数.Qt插件的使用方法:[1]project_main_1工程中定义接口class interface__1{publ

2013-04-26 22:23:46 1006

socket多线程服务器

socket多线程服务器,实现了一个客户端一个线程模式

2009-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除