• C++工厂方法与反射的简单实现


    最近下班后,闲得无聊,打算在Oracle的occi基础之上封装一个访问层,便于处理Oracle的读写操作.

    打算主要参照Poco库和OTL以及DTL,利用模板和STL,tr1和log4cplus等库,实现跨平台的要求.

    之后,在此基础上,参与Java的Hibernate和ibatis等技术,实现一个简单的对象持久化层.

    最近先作了一些技术上的测试和设计工作吧

    先贴一段C++工厂方法与反射的简单实现的实现代码

    #include <iostream>
    #include <memory>
    
    using namespace std;
    
    class Object
    {
    public:
    	virtual bool Save() = 0;
    	virtual bool Get(...) 
    	{
    		return false;
    	}
    };
    
    class A
    {
    public:
    	A(){}
    	A( int _value )
    	{
    		this->value = _value;
    	}
    	int value;
    };
    
    #define register_class(Class)	\
    class Class##Adpter : public Object, public Class	\
    {	\
    public:	\
    	Class##Adpter(){}	\
    	virtual bool Save()	\
    	{	\
    		return true;	\
    	}	\
    	static Object* createInstance()	\
    {	\
    	return new Class##Adpter;	\
    }	\
    	virtual bool Get( ... )	\
    	{	\
    		return true;	\
    	}	\
    public:	\
    	Class object;	\
    };
    
    typedef shared_ptr<Object> Shared_Object;
    
    template<class ObjType>
    class ObjectFactory
    {
    public:
    	static Shared_Object CreateInstance()
    	{
    		return Shared_Object(new ObjType);
    	}
    };
    
    register_class(A)
    
    int main()
    {
    	Shared_Object a = ObjectFactory<AAdpter>::CreateInstance();
    	cout << a->Save() << endl;
    	cout << a->Get(1) << endl;
    }
    
    
    

    小人本潜水在思源的贴边
    ID又多 又有钱
    快活乐无边
    谁知道站总监
    他蛮横不留情面
    他勾结站长目无天
    占我ID夺我钱
    我马甲跟他来翻脸
    反被他来把经验减
    我同学骂他欺新人
    反被他捉进了小黑屋里面
    874了一百遍啊一百遍
    啊 最后他咬舌自尽 遗恨人间
    他还将我和马甲赶出了思源 流落在人间
    我为求回思源
    无奈行乞在贴前
    谁知道站总监他实在太阴险
    知道此情形竟派人来暗算将我发文狂删到0篇
    小人ID强 残命独留全
    可怜马甲他 竟遭删
    为求养ID
    惟有傍人卖身自作践
    一面苦赚钱 一面写诗篇
    发誓把名气显
    手刃总监意志坚啊
    从此总监ID念心间
    我永铭记此仇不供戴天
  • 相关阅读:
    C#运行Javascript脚本Utility
    SQL Mail XPs Options
    TSQL AVG Functions
    eclipse编译时过滤SVN版本控制信息方法(转)
    追MM与设计模式
    android的性能调优
    对象的赋值和复制(转)
    SVN Working Copy xxx locked and cleanup failed
    HTTP协议详解(转)
    atoi和itoa函数的实现
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1919206.html
Copyright © 2020-2023  润新知