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

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


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

编写语言: C++

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

DesignPattern.rar
51.0k
RAR
3次下载



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

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

Loki.rar
2.56M
RAR
0次下载
+522  科创币    phpskycn   2010-02-27    赞扬
+2000  科创币    我说要有光   2010-02-27    分享优秀的原创设计
来自 软件综合
 
2010-3-1 10:40:37
joyeep(作者)
1楼
我说明一下,程序用到模板和STL
所以需要在VC++ 7.0及其以上的版本才可以编译通过。
或者对标准库支持良好的其他编译器也可。
折叠评论
加载评论中,请稍候...
折叠评论
2010-03-20 00:10:21
2010-3-20 00:10:21
2楼
什么..来的..啊?
折叠评论
加载评论中,请稍候...
折叠评论
2010-04-13 21:41:24
2010-4-13 21:41:24
3楼
开始学习C++     额  还是等中考完了吧  我好崇拜93啊、、、
哪位大哥哥给点建议啊 、、
折叠评论
加载评论中,请稍候...
折叠评论
2010-05-25 23:21:08
2010-5-25 23:21:08
4楼
模块分割,架构,编码规范,编码方法   楼主,给我讲讲这几个大概的意思吧,迷糊了
折叠评论
加载评论中,请稍候...
折叠评论
2010-05-26 17:28:13
joyeep(作者)
5楼
引用第4楼taongjffa于2010-05-25 23:21发表的  :
模块分割,架构,编码规范,编码方法   楼主,给我讲讲这几个大概的意思吧,迷糊了


如果有兴趣我会不定期的发表一些相关的帖子,请到时候注意便是。
折叠评论
加载评论中,请稍候...
折叠评论
joyeep(作者)
6楼
编码规范是基本功。
编码方法看书后自己需要领悟
架构是要一定代码编写量,比如30万行,或相关高手领导后,再通过细读设计模式瞬间领悟的东西。

模块分割需要有丰富的经验后,比如当项目经理后,你需要做的事情。
折叠评论
加载评论中,请稍候...
折叠评论
7楼
会意了一点。谢谢楼主,看来还是编得少,继续编。
“如果有兴趣我会不定期的发表一些相关的帖子,请到时候注意便是”,等你的帖子,受教了
折叠评论
加载评论中,请稍候...
折叠评论
2010-06-26 00:14:06
2010-6-26 00:14:06
8楼
=  =

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

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

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

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

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

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

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

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

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

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

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

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

对了,您可以把您写的导致我这个库出问题的测试程序发出来,我们共同探讨探讨。
折叠评论
加载评论中,请稍候...
折叠评论
10楼
1:2003以及以上的NEW是符合C++标准的,当内存不足的时候只跑出异常,除非你更改连接参数。

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

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

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

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

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

5:我说完了。
折叠评论
加载评论中,请稍候...
折叠评论
11楼
嗯嗯~~有点再说明的是,数据库DBMS在使用服务器内存的时候,通常会遇到内存不足的情况,数据库的内存管理非常强大,不过终究还是要判断内存是否足够,来达到内存最大利用率。
折叠评论
加载评论中,请稍候...
折叠评论

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

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png