C++ 设计模式
DSIslander
这个作者很懒,什么都没留下…
展开
-
设计模式C++学习笔记之十三(Decorator装饰模式)
设计模式C++学习笔记之十三(Decorator装饰模式) 装饰模式,动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 13.1.解释 main(),老爸 ISchoolReport,成绩单接口 CFourthGradeSchoolReport,四年级成绩单 ReportDecorator,成绩单装饰器基类 HighScoreDec转载 2012-11-23 10:49:54 · 298 阅读 · 0 评论 -
设计模式C++学习笔记之十四(Iterator迭代器模式)
设计模式C++学习笔记之十四(Iterator迭代器模式) 14.1.解释 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 main(),客户 IProject,产品接口 CProject,产品类 IIterator,迭代器接口 IProjectIterator,产品迭代器接口 CProjectIterator,产品迭代器实现类 说明:CPr转载 2012-11-23 10:53:57 · 365 阅读 · 0 评论 -
设计模式C++学习笔记之十五(Composite组合模式)
设计模式C++学习笔记之十五(Composite组合模式) 15.1.解释 概念:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合的使用具有一致性。 main(),客户 CCorpNode,抽象基类,实现基本信息 CBranchNode,树枝节点,实现Addordinate()函数和GetSubordinate()函数 CLeafNod转载 2012-11-23 10:58:11 · 377 阅读 · 0 评论 -
设计模式C++学习笔记之十七(Chain of Responsibility责任链模式)
设计模式C++学习笔记之十七(Chain of Responsibility责任链模式) 17.1.解释 概念:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 main(),客户 IWomen,发出请求者接口 CWomen,请求者实现类 CHandler,处理请求抽象类 CFathe转载 2012-11-23 11:08:28 · 381 阅读 · 0 评论 -
设计模式C++学习笔记之十八(Visitor访问者模式)
设计模式C++学习笔记之十八(Visitor访问者模式) 18.1.解释 概念:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 main(),客户 IVisitor,访问者接口 CBaseVisitor,访问者实现类 CEmployee,被访问者抽象类 CCommonEmployee,被访问者实现类之一 CManage转载 2012-11-23 11:35:33 · 372 阅读 · 0 评论 -
设计模式C++学习笔记之十九(State状态模式)
设计模式C++学习笔记之十九(State状态模式) 19.1.解释 概念:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 main(),客户 CLiftState,电梯状态抽象类 CCloseingState,电梯门关闭 COpenningState,电梯门打开 CRunningState,电梯运行 CStoppingState,电梯停止 CCont转载 2012-11-23 11:45:21 · 490 阅读 · 0 评论 -
设计模式C++学习笔记之八(Adapter适配器模式)
设计模式C++学习笔记之八(Adapter适配器模式) 适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理。是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也是一个比较简单的模式,直接上代码了。 看代码: 8.1.解释 main(),主程序 IUserInfo,本系统内接口 CUse转载 2012-11-22 23:17:18 · 381 阅读 · 0 评论 -
设计模式C++学习笔记之十(Builder建造者模式)
设计模式C++学习笔记之十(Builder建造者模式) 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一段晦涩难懂的文字,实现创建不同表示的方法就是给创建的过程传入创建的参数。详细的还是看代码吧。 10.1.解释 main(),客户 CCarModel,产品模型 CBenzModel,奔驰模型 CBMWModel,宝马模型 ICarBuil转载 2012-11-22 23:35:57 · 331 阅读 · 0 评论 -
设计模式C++学习笔记之十二(Command命令模式)
设计模式C++学习笔记之十二(Command命令模式) 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。应该是一个比较简单的模式了。 12.1.解释 main(),客户 CInvoker,命令接收者,如项目经理 IGroup,执行者接口 CRequirementGroup,实际执行者之一 C转载 2012-11-23 10:41:07 · 449 阅读 · 0 评论 -
设计模式C++学习笔记之十一(Bridge桥梁模式)
设计模式C++学习笔记之十一(Bridge桥梁模式) 桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现分离的办法就是增加一个类, 11.1.解释 main(),客户 IProduct,产品接口 CHouse,房子 CIPod,ipod CClothes,服装 CNewCorp,桥梁类,MakeMoney()是桥梁方法 CNewHouseCorp,只能生产房转载 2012-11-23 10:36:31 · 358 阅读 · 0 评论 -
设计模式C++学习笔记之一(Strategy策略模式)
设计模式C++学习笔记之一(Strategy策略模式) 无意中,从网上下到一本电子书《24种设计模式介绍与6大设计原则》,很好奇这里有24种设计模式,印象中GOF写的《设计模式》(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有趣。很感谢作者写出这样好的例子来,我的目的是把作者提到的例子用C++来实现。写这本书的作者是:cbf4life,转载 2012-11-22 22:33:27 · 375 阅读 · 0 评论 -
设计模式C++学习笔记之三(Singleton单例模式)
设计模式C++学习笔记之三(Singleton单例模式) 单例模式看起来也蛮简单的,就是在系统中只允许产生这个类的一个实例,既然这么简单,就直接贴代码了。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。 3.1.解释 main(),大臣 CEmperor,需要单例的类 说明:很多大臣拜见的皇帝,只有一个。体现在面向对象方面,CEmperor定义一个静态转载 2012-11-22 22:46:01 · 299 阅读 · 0 评论 -
设计模式C++学习笔记之四(Multition多例模式)
设计模式C++学习笔记之四(Multition多例模式) 多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到。更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。 4.1.解释 main(),客户 略 说明:和单例基本一样,是有个数限制的单例。如果对于产生的实例个数没有限制,那就不是多例了,和普通的类没有区别。 举例:曾经开发过一个从服转载 2012-11-22 22:54:28 · 425 阅读 · 0 评论 -
设计模式C++学习笔记之五(Factory Method工厂方法模式)
设计模式C++学习笔记之五(Factory Method工厂方法模式) 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。这个例子更详细的内容及说明可以参考原作者博客:cbf转载 2012-11-22 22:56:07 · 384 阅读 · 0 评论 -
设计模式C++学习笔记之九(Template Method模板方法模式)
设计模式C++学习笔记之九(Template Method模板方法模式) 模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。cbf4life举的例子是悍马车模型,更详细的例子说明可以参考原作者博客:cbf4life.cnblogs.com。这转载 2012-11-22 23:27:26 · 295 阅读 · 0 评论 -
设计模式C++学习笔记之六(AbstractFactory抽象工厂模式)
设计模式C++学习笔记之六(AbstractFactory抽象工厂模式) 抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。对于工厂方法来说,抽象工厂可实现一系列产品的生产,抽象工厂更注重产品的组合。 看代码: 7.1.解释 main(),女娲 IHuman,产品接口 CYellowHuman,抽象产品之一 CYellowFemaleHuman,具体产转载 2012-11-22 23:11:01 · 356 阅读 · 0 评论 -
设计模式C++学习笔记之七(Facade门面模式)
设计模式C++学习笔记之七(Facade门面模式) Facade门面模式,也是比较常用的一种模式,基本上所有软件系统中都会用到。GOF在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户程序调用。这里举了一个发送邮件的例子,我们理解为转载 2012-11-22 23:03:52 · 412 阅读 · 0 评论 -
设计模式C++学习笔记之二(Proxy代理模式)
设计模式C++学习笔记之二(Proxy代理模式) 代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢。cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com。现在贴代码,以方便随用随取。 2.1.解释 main(),西门庆 IKindWomen,接口 CWangPo,代理 CPanJinLian,实际转载 2012-11-23 10:31:19 · 320 阅读 · 0 评论 -
设计模式C++学习笔记之十六(Observer观察者模式)
设计模式C++学习笔记之十六(Observer观察者模式) 16.1.解释 概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 main(), IObservable,被观察者接口 CHanFeiZiObservable,被观察者韩非子 IObserver,观察者接口 CLiSiObserver,观察者李斯 CZhou转载 2012-11-23 11:00:00 · 384 阅读 · 0 评论