随笔分类 - 设计模式
摘要:在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。 在软件设计中,使用代理模式的例子也很多,例如,要访
阅读全文
摘要:在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。 例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分
阅读全文
摘要:在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。 软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”
阅读全文
摘要:在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框等,这些都可以使用装饰模式。它的主要作用就是: 增强一个类原有的功能。 为一个类添加新的功能。 并且装饰模式也不会改变原有的类。 在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其
阅读全文
摘要:一、定义与特点 组合(Composite Pattern)模式的定义:有时又叫作整体-部分模式,是用于把一组相似的对象当作一个单一的对象。组合模式是用于整体与部分的结构,当整体与部分有相似的结构,在操作时可以被一致对待时,就可以使用组合模式。例如: 文件夹和子文件夹的关系:文件夹中可以存放文件,也可
阅读全文
摘要:一、定义 考虑这样一个需求:绘制矩形、圆形、三角形这三种图案。按照面向对象的理念,我们至少需要个具体类,对应三种不同的图形。 // 抽象形状类IShape class IShape { public: void draw(); }; // 三个具体形状类:矩形、圆形、三角形 class Rectan
阅读全文
摘要:结构型模式是用来设计程序的结构的。结构型模式就像搭积木,将不同的类结合在一起形成契合的结构。包括以下几种: 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 下面我们介绍第一种模式:适配器模式。 一、定义与特点 适配器模式(Adapter)的定义如下:**将一个类的接口转换成客
阅读全文
摘要:一、简介 在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。 原型模式(Prototype)也正是提供了自我复制的功能, 就是说新对象的创建可以通过已有对象进行创建。
阅读全文
摘要:在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的;游戏中的角色,也是有性别、个性、能力、脸型、体型、服装、发型等多个特性。 以上这些产品都是由多个部件构成的,各个部
阅读全文
摘要:单例可能是最常用的简单的一种设计模式,某个对象全局只需要一个实例时,就可以使用单例模式。实现方法多样,根据不同的需求有不同的写法;同时单例也有其局限性,因此有很多人是反对使用单例的。 本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等; 按照从简单到复杂,最终回归简单的的
阅读全文
摘要:工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 其介绍如下: 意图:定义一个创建对象的接口,让其子类自己决定
阅读全文
摘要:一、设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用,是让面向对象保持结构良好的秘诀。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 项目中合
阅读全文