【开源】我封装的C++设计模式库(原创)
正在重构几个大项目,自己也正在编写设计模式库。
覆盖20几种采用模式;

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


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

编写语言: C++

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

attachment icon DesignPattern.rar 51.00KB RAR 51次下载


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

所属专业
上级专业
同级专业
joyeep
学者 机友 笔友
文章
88
回复
565
学术分
8
2009/05/25注册,1 个月前活动
暂无简介
%7B%22isDisplay%22%3Atrue%7D

仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
{{submitted?"":"投诉或举报"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png
插入公式
分享回复:{{shareId}}
加载中...
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
加入关注取消关注
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
建议修改
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
下载资料
{{fileName}}
大小:{{size}}
下载当前附件将花费 {{costMessage}}
{{description}}
你当前剩余 {{holdMessage}}
{{fileName}}
大小:{{size}}
当前附件免费。
你已购买过此附件,下载当前附件不需要花费积分。
加载中...
{{errorInfo}}
附件已丢失
当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}