23种设计模式的C++实现
之前看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++的时候,有以下一些非常方便的特性:
- 强大的STL可以使用,像vector,string,map等等这些用起来真是太舒服了。
- 函数重载真是太方便了,以前为非要起一个不一样的函数名真是麻烦,有时候还不得不用上foo1等这样的数字后缀法。
- 形参默认值,不经常改变的参数直接加个默认值,方便极了。
- 针对接口编程。这个是设计模式的一个重要的原则,通过C++的虚函数可以很好地实现这一点。
感觉以后能用C++的地方都不想再用C了。
欢迎大家针对代码https://github.com/clpsz/GOF-Design-Patterns提意见,欢迎讨论。
23种设计模式的C++实现的更多相关文章
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- c#中的23种设计模式
C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核 ...
- Java 23种设计模式
转自: http://zz563143188.iteye.com/blog/1847029 ; i<count; i++){ list.add(new MailSender()); } } pu ...
- 从追MM谈Java的23种设计模式(转)
从追MM谈Java的23种设计模式 这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...
- java 23种设计模式及具体例子 收藏有时间慢慢看
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...
- JAVA:23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 从追MM谈Java的23种设计模式
从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...
- 23种设计模式全解析 (java版本)
转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...
随机推荐
- C++设计模式之建造模式
#include <iostream>using namespace std; class ApplePhone { public: virtual void buildCamera()= ...
- RedMine 版本管理工具
一.介绍: Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集 ...
- oracle 查询表的大小,表空间的使用情况,默认表空间
oracle 查询表的大小,表空间的使用情况,默认表空间 oracle 查询表的大小,表空间的使用情况,默认表空间 --查看某张表占用磁盘空间大小 ( 表名大写 ) Select Segment_Na ...
- #include <map>
//tuple多元数组,必须是静态数组,类似结构体 //配合array,vector使用 //std::tuple<数组元素类型>数组变量名(数组元素变量名); #include < ...
- DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)
从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...
- 转发年浩大神的spfa算法
http://www.cnblogs.com/superxuezhazha/p/5426624.html #include<iostream> #include<stdio.h> ...
- poj3162 Walking Race
题目大意:给一个树形图n个点(n-1条边),XXX要练习竞走,每次选定一个点k作为开始点,每次走从k开始能走的最长的一条路径(不要重边).要求出最长的连续的这样的k,假设连续有kx个,前提:这样kx条 ...
- Problem G: If We Were a Child Again
Problem G: If We Were a Child AgainTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 14[Submi ...
- Apache 编译扩展的方法
下载源码包 进入源码包的modules目录 选择你要编译的.c文件 eg: /home/work/local/apache/bin/apxs -c -i -a mod_proxy_http.c 选项说 ...
- Visusl Studio常用快捷键
Visusl Studio常用快捷键 快捷键 功能 ctrl+k,c 注释选中行 ctrl+k,u 取消对选中行的注释 CTRL + SHIFT + B:生成解决方案 CTRL + ...