- 博客(7)
- 资源 (4)
- 收藏
- 关注
原创 编译防火墙——C++的Pimpl惯用法解析
Pimpl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解耦的方法。这个技巧可以避免在头文件中暴露私有细节(见下图1),因此是促进API接口与实现保持完全分离的重要机制。但是Pimpl并不是严格意义上的设计模式(它是受制于C++特定限制的变通方案),这种惯用法可以看作桥接设计模式的一种特例。图1: Pimpl惯用法,这里的公有类拥有
2015-08-30 19:55:06 18439 8
原创 设计模式之策略(Strategy)模式
Strategy模式是一种行为型设计模式,它将算法一个个封装起来,在某一时刻能够互换地使用其中的一个算法。从概念上看,所有这些算法完成的都是相同的工作,只是实现不同而已。动机在开发中,我们常常会遇到概念上相同,处理方法不同的任务,例如,对一件商品使用不同的税额计算方法来计算其价格。一般来说,有以下的方法来处理: 复制和粘贴(一份代码具有两个版本,维护成本大) 使用switch或者if语句,用一个变
2015-08-26 19:51:24 4178 2
原创 组合(Composite)模式
定义Composite模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体“的层次结构,并使用户对单个对象和组合对象的使用具有一致性。动机当处理树形结构的数据时,我们常常需要区别对待叶子结点和内部结点,这使得代码更加复杂,以至于容易出错。因此,如果有一种方法,可以使我们可以统一处理叶子结点和内部结点,那么,对于我们提高代码的质量是十分有帮助的。 Composite模式正是这样一种设计
2015-08-24 21:27:48 1228
原创 封装算法: 模板方法(Template Method)模式
template method(模板方法)模式是一种行为型设计模式,它在一个方法中定义了算法的骨架(这个方法被称为template method,模板方法),并将算法的具体步骤放到具体的子类中去实现。template method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。需要指出的是,这里所说的template并不是c++中的模板。适用性算法的骨架事先已确定,只是算法的某些步骤
2015-08-24 14:24:52 2320
原创 Git flow的分支模型与及常用命令简介
Git flow是git的一个扩展集,它基于Vincent Driessen 的分支模型,文章“A successful Git branching model”对这一分支模型进行了描述,其示意图如下:Git flow的源码可以通过以下链接下载: https://github.com/nvie/gitflow 或者,直接输入以下命令安装git flow: apt-get install gi
2015-08-19 22:35:38 10309
原创 Windows环境下msysgit安装git flow
git flow是git的一个扩展集,它基于Vincent Driessen 的分支模型,可以用来简化代码的版本发布流程。本文讲述如何为msysgit安装git flow。下载getopt.exegetopt.exe的下载链接:http://downloads.sourceforge.net/gnuwin32/util-linux-ng-2.14.1-bin.zip解压,进入bin目录,复制其中的g
2015-08-18 18:00:26 3273
原创 使用virtualenv, uwsgi, nginx来布署flask
本文讲述了如何使用virtualenv, uwsgi, nginx来布署flask的步骤。升级软件包执行以下命令,保证你的vps安装了最新的软件包。 sudo apt-get update sudo apt-get upgrade 安装python和virtualenv sudo apt-get install build-essential python-dev python-pip
2015-08-18 10:10:59 9485 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人