【开源】我封装的C++设计模式库(原创)
joyeep2010/02/27软件综合 IP:湖北
正在重构几个大项目,自己也正在编写设计模式库。
覆盖20几种采用模式;

而本人是本着好用,简洁至上的原则。编写了一套易用,易懂的模式库。
该模式库会用到LOKI部分对象(和BOOST 用到STL 对象基本类似)。请注意下载LOKI。


代码完全原创,免费提供大家下载,学习,研究和使用,
参考文献:《设计模式》《C++设计新思维》《模式分析》《代码重构》
程序中所使用的英文注释,来自《设计模式》一书。

编写语言: C++

程序源文件下载:
(本程序版权属于Joyeep,代码经过测试,无BUG,工业强度,免费供大家学习,研究,如果用于商业用途,请注明出处)

attachment icon DesignPattern.rar 50.28KB RAR 58次下载


(欢迎探讨,研究,评论)

LOKI和用到相关第三方程序文件:

attachment icon Loki.rar 2.56MB RAR 31次下载
+522  科创币    phpskycn    2010/02/27 赞扬
+2000  科创币    我说要有光    2010/02/27 分享优秀的原创设计
来自:计算机科学 / 软件综合
12
 
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
joyeep 作者
14年2个月前 IP:未同步
196896
我说明一下,程序用到模板和STL
所以需要在VC++ 7.0及其以上的版本才可以编译通过。
或者对标准库支持良好的其他编译器也可。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lovehongkong
14年1个月前 IP:未同步
201933
什么..来的..啊?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小龙
14年0个月前 IP:未同步
208936
开始学习C++     额  还是等中考完了吧  我好崇拜93啊、、、
哪位大哥哥给点建议啊 、、
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
taongjffa
13年11个月前 IP:未同步
219261
模块分割,架构,编码规范,编码方法   楼主,给我讲讲这几个大概的意思吧,迷糊了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
joyeep作者
13年11个月前 IP:未同步
219375
引用第4楼taongjffa于2010-05-25 23:21发表的  :
模块分割,架构,编码规范,编码方法   楼主,给我讲讲这几个大概的意思吧,迷糊了


如果有兴趣我会不定期的发表一些相关的帖子,请到时候注意便是。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
joyeep作者
13年11个月前 IP:未同步
219376
编码规范是基本功。
编码方法看书后自己需要领悟
架构是要一定代码编写量,比如30万行,或相关高手领导后,再通过细读设计模式瞬间领悟的东西。

模块分割需要有丰富的经验后,比如当项目经理后,你需要做的事情。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
taongjffa
13年11个月前 IP:未同步
219385
会意了一点。谢谢楼主,看来还是编得少,继续编。
“如果有兴趣我会不定期的发表一些相关的帖子,请到时候注意便是”,等你的帖子,受教了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
csakura
13年10个月前 IP:未同步
228554
=  =

无BUG。。。请问是怎么测试出无BUG的?白盒黑盒?testcase在那?覆盖率是多少?
工业强度的测试数据呢?
内存申请不做失败处理,某些关键数据连线程安全都不满足。。实在不解何来工业强度这一说。。
另外,您工作在2003以及更高级版本下,new失败直接抛异常挂掉了
=  = 还在析构做徒劳无功的工作。
if (_action != NULL)
   delete _action;

另外大部分代码指针使用都不检查的,根本不满足代码内部防御,就打上工业强度标签。。

实际上C++,特别是LOKI把程序运行环境往理想化的方面想的,面对一个多线程、多进程、脏数据、二进制模块不兼容的环境,这种用法会死得很惨~~~

例如使用全局RAII初始化本地资源、全局对象析构顺序等。

LOKI这用于学术研究还行,实际应用很少。。。TR1却更实用些~~~

Singleton我在网上看了很多,10个就有9个有明显的BUG。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
joyeep作者
13年10个月前 IP:未同步
228619
我想说一下,我公开我编写的模式库,已经在商业软件使用以久,还是上市公司的软件,不过软件是行业软件,非消费级别的。
软件安全全程有股东监管,不是还是谢谢你的提醒,如今我对这个代码更改也很大,加入很多安全机制,这些都是应付环境恶劣情况下的。

我就本身对现在的版本说一下,只要用的好,符合规范,母体代码规范,不做萎缩之事,我这个模式库是不会出问题。

我这个在2003或以上环境下是不会因为new异常挂掉的。为什么在new的地方不扑捉,一是,我认为没有必要,我分析过很多开源代码,很少会对这个进行处理。如果程序运行到NEW 都挂,想必这个母体程序该好好反省了 。

其次,我这个不是频繁申请内存,所以出现这样的事情的几率很低,很低。

说到安全,最安全的就是逻辑清晰,流程明晰。

LOKI是非常优秀,也很是伟大的,我一直都很崇拜这个作者,
Andri Alexandrescu 为这个库写书我看后就深受感触,想不到世间还有如此高人。

实用性并不代表就好,进行学术研究的东西就说明里面博大精深,有可探讨之地。

对了,您可以把您写的导致我这个库出问题的测试程序发出来,我们共同探讨探讨。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
csakura
13年10个月前 IP:未同步
228892
1:2003以及以上的NEW是符合C++标准的,当内存不足的时候只跑出异常,除非你更改连接参数。

2:工业级模块或者代码应该符合内部防御的原则,例如调用数据库接口去获取数据,我请求的数据比内存还大,那按照你的意思,数据库接口崩溃是合情合理的咯?实际上大部分都会直接返回内存不足的错误代码给你。

再举个例吧,TCP说是可靠连接,无论windows还是linux实现的TCP栈都非常稳定可靠,很多工业现场都在使用,不过我就发现TCP在某些情况下会进入ACK死循环,可靠吗?

商业应用很久~~我不清楚你的软件是跑在什么场合下的。。不过你可以尝试去面对一下旁边就是解放军的干扰雷达的环境,在这环境下进行无线通信~~~够恶劣吧~~

3:不否认C++的GP非常强大,但是可维护性~编译期所消耗的资源,一般都不会在项目中试用,如果使用一般是限定模块内部使用。如果某项目组组员大肆使用GP,可能这人有严重的英雄主义。

4:DP可以说是前人的经验总结,不过经验毕竟是经验,照搬照套是没用的,相信你也明白。不是说把LOKI弄进来就能把程序送上天,我发现很多人为了使用DP而使用DP。。

5:我说完了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
csakura
13年10个月前 IP:未同步
228893
嗯嗯~~有点再说明的是,数据库DBMS在使用服务器内存的时候,通常会遇到内存不足的情况,数据库的内存管理非常强大,不过终究还是要判断内存是否足够,来达到内存最大利用率。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
joyeep
学者 机友 笔友
文章
88
回复
565
学术分
8
2009/05/25注册,20时53分前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}