摘要: 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一段晦涩难懂的文字,实现创建不同表示的方法就是给创建的过程传入创建的参数。详细的还是看代码吧。10.1.解释main(),客户CCarModel,产品模型CBenzModel,奔驰模型CBMWModel,宝马模型I... 阅读全文
posted @ 2015-03-23 23:52 廖先生 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。cbf4life举的例子是悍马车模型,更详细的例子说明可以参考原作者博客:cbf4life.c... 阅读全文
posted @ 2015-03-23 23:36 廖先生 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理。是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也是一个比较简单的模式,直接上代码了。看代码:8.1.解释main(),主程序IUserInfo,本... 阅读全文
posted @ 2015-03-23 22:41 廖先生 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。对于工厂方法来说,抽象工厂可实现一系列产品的生产,抽象工厂更注重产品的组合。看代码:7.1.解释main(),女娲IHuman,产品接口CYellowHuman,抽象产品之一CYellowFemaleHuman,具体产品之... 阅读全文
posted @ 2015-03-23 22:30 廖先生 阅读(186) 评论(0) 推荐(0) 编辑
摘要: Facade门面模式,也是比较常用的一种模式,基本上所有软件系统中都会用到。GOF在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户程序调用。这... 阅读全文
posted @ 2015-03-23 22:10 廖先生 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。这个例子更详细的内容及说明可以... 阅读全文
posted @ 2015-03-23 22:03 廖先生 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。4.1.解释main(),客户略说明:和单例基本一样,是有个数限制的单例。如果对于产生的实例个数没有限制,那就不是多例了,和普通的类没有区别。举例:曾... 阅读全文
posted @ 2015-03-23 22:00 廖先生 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 单例模式看起来也蛮简单的,就是在系统中只允许产生这个类的一个实例,既然这么简单,就直接贴代码了。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。3.1.解释main(),大臣CEmperor,需要单例的类说明:很多大臣拜见的皇帝,只有一个。体现在面向对象方面,CEmp... 阅读全文
posted @ 2015-03-23 21:40 廖先生 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢。cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。现在贴代码,以方便随用随取。2.1.解释main(),西门庆IKindWomen,接口CWangPo,代理CP... 阅读全文
posted @ 2015-03-23 21:38 廖先生 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 无意中,从网上下到一本电子书《24种设计模式介绍与6大设计原则》,很好奇这里有24种设计模式,印象中GOF写的《设计模式》(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有趣。很感谢作者写出这样好的例子来,我的目的是把作者提到的例子用C++来实现... 阅读全文
posted @ 2015-03-23 20:01 廖先生 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 只需要在此目录下convmv-fGBK-tUTF-8--notest*.xxx执行这个命令即可 阅读全文
posted @ 2015-03-23 16:56 廖先生 阅读(353) 评论(0) 推荐(0) 编辑