之前看Head First设计模式的时候照着书上的代码实现了一个C++版本(书上是Java版本的),代码上传在https://github.com/clpsz/Book-HFDP-Code

当时因为能力有限,没有直接选择看GOF的《设计模式:可复用面向对象软件的基础》。最近一个月在Windows上写了点QT的小程序,对C++及设计模式有了点认识,回头再来看GOF的大作也不觉得有那么的难了。所以抽空把这本书通读了一遍,虽然书上本来就有些C++的代码,但是基本上都是基于一个特定的场景的,且很多都不全,因此我就顺便把里面所有的模式都写了一遍并放到Github上去了,地址如下https://github.com/clpsz/GOF-Design-Patterns。所有代码花了我三天多一点的时间,从周六开始写,到今天周二早上。

所有代码都是该模式的Demo版,没有预设的场景,没有使用第三方库,只用到了string,vector,map这几个STL,因此直接原生C++即可编译,我的测试环境为Ubuntu 12.04 64bit。

之前一直在做Linux开发,所以对C语言比较熟,直观的感觉就是C语言好强大,效率高,依赖少,运行容易。最近做了点C++,相对于C而言,执行效率几乎没降低,而开发的效率大大提高了。个人感觉我在使用C++的时候,有以下一些非常方便的特性:

  1. 强大的STL可以使用,像vector,string,map等等这些用起来真是太舒服了。
  2. 函数重载真是太方便了,以前为非要起一个不一样的函数名真是麻烦,有时候还不得不用上foo1等这样的数字后缀法。
  3. 形参默认值,不经常改变的参数直接加个默认值,方便极了。
  4. 针对接口编程。这个是设计模式的一个重要的原则,通过C++的虚函数可以很好地实现这一点。

感觉以后能用C++的地方都不想再用C了。

欢迎大家针对代码https://github.com/clpsz/GOF-Design-Patterns提意见,欢迎讨论。

最新文章

  1. django server之间通过remote user 相互调用
  2. Eclipse安装SVN插件
  3. 【.net core 跨平台】第一步 在Ubuntu16.04 配置.net core环境
  4. PMO是什么?如何与其他部门协作配合提高项目成功率?
  5. 关于OnEraseBkgnd和OnPaint的转载
  6. .NET领域最为流行的IOC框架之一Autofac
  7. {$ecs_css_path}
  8. Apache Mina 入门实例
  9. [转]Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
  10. 执行原始的 SQL 查询
  11. Ajax异步的回调函数执行了多遍
  12. 95秀-PullToRefreshListView 示例
  13. TP-LINK telnet远程 重启路由器(转)
  14. ios-->制作ipa文件
  15. Codeforces Round #542 (Div. 1) 题解
  16. luogu P4568 [JLOI2011]飞行路线
  17. C# 创建多级文件夹示例
  18. BZOJ 4159 [Neerc2009]Business Center
  19. tomcat及nginx相关,格式化输出,配置及日志解析
  20. Java复习 之流

热门文章

  1. 给进程分配cpu核心
  2. tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中
  3. 【Chromium中文文档】跨平台开发的约定与模式
  4. JS中特殊句子-with
  5. Ubuntu 12.04 Android2.2源码make** /classes-full-debug.jar Error 41错误解决
  6. 有哪些适合学生参与的 C++,网络编程方面的开源项目?
  7. Oracle_系统和对象权限管理
  8. Android官方终于支持 Navigation Drawer(导航抽屉)模式
  9. AIDL 发生异常的原因 Android java.lang.SecurityException: Binder invocation to an incorrect interface
  10. 使用sqlplus批量执行脚本的总结