设计模式
文章平均质量分 71
Lqsaber
励志成为一个优秀C++参天巨猿
展开
-
设计模式之代理模式(C++实现)
代理模式:为其他对象提供代理以控制对这个对象的访问。代理模式运用的场合:1、远程代理。也就是为对象在不同的地址空间提供局部变量代表,这样可以隐藏一个对象存在于不同地址空间的事实2、虚拟代理。3、原创 2016-05-24 16:59:16 · 316 阅读 · 0 评论 -
设计模式之抽象工厂(C++实现)
现在可以和工厂模式对比一下,抽象工厂返回的接口不再是产品A和产品B的共同基类Product了,而是产品A、产品B基类(在工厂模式中它们为具体实现类,这里变成了基类)了。此时工厂的抽象和简单工厂中的工厂方法也很类似,就是这些特征区使其别于工厂模式而变成抽象工厂模式了,因此抽象工厂解决的是创建一系列有共同风格的产品(鲁菜还是粤菜),而工厂方法模式解决的创建有共同特征的一系列产品(红烧肉、清蒸鱼它们都是原创 2016-06-16 19:25:58 · 397 阅读 · 0 评论 -
设计模式之观察者模式(C++实现)
观察者模式概念:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。特点: 1.观察者模式定义了对象之间一对多的关系。 2.主题(也就是可观察者)用一个共同的接口来更新观察者。 3.观察者和可观察者用松耦合的方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口 4原创 2016-06-16 16:40:33 · 318 阅读 · 0 评论 -
设计模式之建造者模式(C++实现)
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这是建造者模式的标准表达,不过看着让人迷惑,什么叫构建和表示的分离?一个对象使用构造函数构造之后不就固定了,只有通过它方法来改变它的属性吗?而且还要同样的构建过程搞出不同的表示,怎么可能呢?多写几个构造函数?其实多写几个构造函数,根据不同参数设置对象不同的属性,也可以达到这样的效果,只是这样就非常麻烦了,原创 2016-06-02 17:13:11 · 321 阅读 · 0 评论 -
设计模式之策略模式(C++实现)
策略模式其实是很简单并且很好用的一个模式。在开发中,我们经常碰到一个功能,可以使用不同的算法去实现它,我们要根据不同的情况去调用对应的算法,策略模式就是定义一系列算法,并且把它们封装起来,并且使它们相互可替换。其实这个模式就和多态的思想很相近。例如,我们去旅游可以使用不同的策略:走路,跑步,飞。。。我们可以根据自己的情况去使用相对应的策略。/************************原创 2016-05-16 14:57:39 · 353 阅读 · 0 评论 -
设计模式之简单工厂模式(C++实现)
面向对象编程的好处就是:便于维护,可复用,可扩展,灵活性好。接下来,我会向大家实现一个简单的计算器程序,能够输入两个数和一个运算符,就能得出运算结果。其实这是一个很简单的程序,但是并不是所有人都能很好地用面向对象编程来实现它。/**************************************************************main.cpp********原创 2016-05-16 11:32:03 · 310 阅读 · 0 评论 -
设计模式之工厂方法模式(C++实现)
工厂方法模式其实跟简单工厂模式比较类似,不过简单工厂违反了开放封闭原则。工厂方法模式虽然代码编写也许会比简单工厂更复杂,但是却克服了简单工厂的弊端,还是以计算器来做例子例/***************************************************************************main.cpp***************************原创 2016-05-25 16:55:56 · 265 阅读 · 0 评论 -
设计模式之外观模式(C++实现)
外观模式即为子系统中的一组接口提供一个一致的界面,此模式提供了一个高层接口,使得这一子系统更加容易使用。在开发阶段,子系统往往因为不断地重构演化而变得越来越复杂,使用外观模式可以提供一个简单的接口,减少它们之间的依赖。 在维护一个大型系统时,可能这个系统已经非常难以维护了和扩展了,我们可以为这个系统增加一个外观Facade类,来提供遗留代码的比较清晰的接口,让新系统与Facade对象交互,Fac原创 2016-06-01 15:57:47 · 312 阅读 · 0 评论 -
设计模式之模板模式(C++实现)
模板模式即定义一个操作中的算法的骨架,而将一些具体步骤延迟到子类中。模板使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。例如,现在老师在黑板上写题目,学生们要把题目抄到本子上,并且写下自己的答案,我们可以把抄题目和写答案放到父类,而所给出的答案放到子类/*************************************************************原创 2016-06-01 11:51:28 · 295 阅读 · 0 评论 -
设计模式之依赖倒置原则
谓依赖倒置原则(Dependence Inversion Principle )就是要依赖于抽象,不要依赖于具体。简单的说就是对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变化时,上层也要跟着变化,这就会导致模块的复用性降低而且大大提高了开发的成本。面向对象的开发很好的解决了这个问题,一般转载 2016-05-16 17:15:05 · 321 阅读 · 0 评论 -
设计模式之开放关闭原则
开放关闭原则是说软件实体应该可以扩展,但是不可修改。这是一个说起来容易,但是实际操作起来却很麻烦的一个模式。它要求你在代码编写之前就确定哪里需要修改,哪里不需要修改,但是需求总是多变的,在一开始就确定,很难做到,这就需要工作经验的积累和对工作领域的知识了解。在选择需要被扩展的代码部分时要小心。每个地方都采用开放-关闭原则,是一种浪费,也没必要,还会导致代码变得复杂且难以理解。拒绝不成熟抽象跟抽象本原创 2016-05-16 16:40:35 · 291 阅读 · 0 评论 -
设计模式之单一原则
单一原则,顾名思义,其实就是一个类只负责一个职责,单一原则好处显而易见:可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;提高类的可读性,提高系统的可维护性;变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。例如完成一个游戏需要用到界面,游戏逻辑,数据库等,就可以简单地分为三个类去实现,一个类负责界面原创 2016-05-16 16:24:16 · 303 阅读 · 0 评论 -
设计模式之原型模式(C++实现)
原型模式其实就是从一个对象再创建另一个对象,并且不需要知道任何创建的细节。其实就相当于拷贝。/*********************************************************************Copy.h*****************************************************************/#include原创 2016-05-26 19:18:17 · 277 阅读 · 0 评论 -
设计模式之装扮模式(C++实现)
装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。/*************原创 2016-05-17 19:15:42 · 337 阅读 · 0 评论 -
设计模式之状态模式(C++实现)
状态模式:其实就是在条件表达式过于复杂的时候,把状态的判断情况转移到表示不同状态的一系列类中,可以把复杂的逻辑简化。比如:现在有三个情况,在早上的时候工作状态比较好,下午要继续努力工作,晚上下班回家,就可以把这三个判断继承一个状态父类,分成三个子类去写,再用一个工作类维护初始的状态,这样在新加其他状态的时候,就不必去修改原来的类,实现了封闭-开发原则。/**************原创 2016-06-17 13:46:47 · 393 阅读 · 0 评论