- 博客(12)
- 资源 (9)
- 收藏
- 关注
原创 C++设计模式之装饰模式
C++设计模式之装饰模式 动态地给一个对象增加一些额外的职责,就增加对象的功能来说,装饰模式比生成子类更为灵活。装饰模式是一种对象结构模式。一、缘由我们常常通过继承的方式来对一个既有的类进行功能添加,但继承方式有显著的局限性,因为继承具有侵入性继承是一种is a的关系,具有强耦合性,难以复用代码。例如在窗口控件当中,要增加新的功能如增加滚动条,增加背景图片,通过继承的方式来增加新的功能,
2016-03-06 17:00:53 894
原创 C++设计模式之组合模式
C++设计模式之组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。C设计模式之组合模式一缘由二实现三实例代码一、缘由在自然界中常常存在着许多树形关系,例如公司的结构,有子公司,部门。又如文件系统的结构,目录下边有目录或者文件,而目录下的目录又有目录和文件,如此递归下去。而组合模式就是为了处理这种树形关系而存在的
2016-03-05 23:42:22 851
原创 C++设计模式之桥接模式
C++ 设计模式之桥接模式 将抽象部份与它的实现部份分离,使它们都可以独立地变化。C 设计模式之桥接模式一缘由二实现三代码四总结一、缘由假设现在需要大、中、小、三种型号的画笔来绘制7种不同的颜色,如果使用蜡笔,就需要准备 3*7 = 21支蜡笔。而如果使用毛笔,则只需要3支毛笔和7中颜料。显然使用毛笔的形式要比蜡笔简单许多,这其中缘由在于在蜡笔这个对象中型号和颜料两个不同维度的因素耦
2016-03-05 21:58:04 850
原创 C++设计模式之适配器模式
C++设计模式之适配器模式 将一个接口转换成客户希望的另一个接口使得接口不兼容的那些类可以一起工作C设计模式之适配器模式一缘由二实现三示例代码一、缘由适配器模式是我个人使用频率比较高的模式,十分简单实用。在许多情况下,我们自己的系统A,要使用既有对象B的接口,但无奈我们的既有系统A和B接口不兼容,这时候适配器可以帮我们解决这个问题。二、实现假设现在有一个函数static void req
2016-03-05 15:13:52 677
原创 C++设计模式之建造者模式
C++设计模式之建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。C设计模式之建造者模式一缘由二实现三代码分析四总结一、缘由当我们在构造一个窗口控件的时候,往往包含三个方面的初始化工作:UI初始化动画初始化信号槽初始化这样我们就可以构造好一个窗口控件了,我们可以看以下类图:乍一看该实现并没有什么问题CenterWidget类在其构造函数中调
2016-03-05 03:02:07 625
原创 C++设计模式之原型模式
C++设计模式之原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象C设计模式之原型模式一缘由二实现三代码分析一、缘由在许多环境下,我们需要从一个A对象生成一个B对象以减小A和B对象的重复代码,例如创建100个只有名字不同而其它信息都相同的Person类实例,这样就可以使用原型对象,从一个Person实例中构造其它99个实例,方便快捷。事实上C++的拷贝构造函数就可
2016-03-04 21:22:45 489
原创 C++设计模式之抽象工厂模式
C++设计模式之抽象工厂模式C设计模式之抽象工厂模式一缘由二实现三代码分析四总结一、缘由在《C++设计模式之工厂方法模式》一文中我们提到,由于简单工厂模式当中的工厂类职责过重,严重违反了单一职责的原则,导致系统扩展十分困难,于是引出了工厂方法模式,工厂方法模式引入抽象的工厂类,具体的创建工作推迟到每个具体的工厂类中,这样每个具体工厂类只负责一种产品的创建,这样每个具体工厂类的职责就足够单一,
2016-03-03 17:08:20 656
原创 C++设计模式之工厂方法模式
C++设计模式之工厂方法模式C设计模式之工厂方法模式一使用情景二实现三代码分析五总结一、使用情景简单工厂模式运用十分简便,但是正如《简单工厂模式》一文中所说的,简单工厂模式具有一个致命的缺点:拓展困难,只要增加新的具体类,就需要对工厂类进行修改,这一点严重违反了开闭原则。我们在思索如何能够实现增加新的产品而不至于修改已有的代码时,工厂方法模式应运而生。二、实现在简单工厂模式中,一个工厂类负责
2016-03-03 15:30:26 549
原创 C++设计模式之简单工厂模式
C++ 设计模式之简单工厂模式C 设计模式之简单工厂模式一使用情景二实现三代码分析五总结一、使用情景在许多情况下,我们需要创建一系列的类的实例,并且这些实例的创建过程都十分繁琐,这时候我们可以将这些类的创建过程都封装到一个工厂类中,由工厂类进行创建,从而屏蔽了创建的细节。 简单工厂的定义如下: 定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常都具有相同的父类。因
2016-03-03 00:28:32 664
原创 C++设计模式之单例模式
C++设计模式之单例模式C设计模式之单例模式一使用情景二实现三代码分析四多线程环境下的单例模式一、使用情景在很多环境下,我们需要保证某些特殊对象在整个系统中的唯一性。windows的资源管理器就是一个很好的例子。无论我们点击多少次“启动任务管理器”都只弹出来一个任务管理器窗口。因为如果弹出多个窗口,而这些窗口的内容都一模一样,全部都是重复的对象,那是没有意义的,而且还会浪费系统资源。而单例模
2016-03-02 22:44:29 499
原创 设计模式之初识UML图
C++设计模式之初识UML图C设计模式之初识UML图继承实现依赖关联一般关联聚合关联组合关联继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系 实现指的是一个class类实现了interface的功能;实现是类与接口之间最常见的关系。依赖类A使用到了类B,这种使用的关系是运行时的
2016-03-02 20:05:13 703 1
原创 单一职责和里氏替换
单一职责和里氏替换单一职责和里氏替换一单一职责原则1 原则解读2 例13 例2二里氏替换原则1 原则解读一、单一职责原则1.1 原则解读 原则定义:应该有且仅有一个原因引起类的变更,也可以说成是一个类只负责一件事情。该原则要求类的职责明确清晰,这样符合该原则的设计有如下好处:由于单个类只负责一件事情,职责清晰明确,类的复杂性降低单个类的复杂性降低,整体可读性提高可读性好,可维
2016-03-02 09:34:16 667
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人