
C++ 设计模式
路痴的旅行
一生有你
展开
-
设计模式C++实现(1)——(创建型)工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创转载 2017-11-28 20:02:16 · 240 阅读 · 0 评论 -
GoF23种设计模式概述
设计模式的经典名著——Design Patterns: Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者Erich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF。 经典的《设计模式...转载 2018-05-12 10:35:43 · 194 阅读 · 0 评论 -
工厂模式与OO设计原则
如果把创建看作一个职责,那么系统中的哪个对象应该拥有这个职责呢?如果把创建看作知识,那么创建知识应该放置在什么地方呢?说到职责我们不得不说一下著名的GRASP原则:GRASP是通用职责分配软件模式(General Responsibility Assignment Software patterns)的简称。它包含了9大模式,分别如下所示: 1 创建者(Creator) :决定对象...转载 2018-05-12 10:30:24 · 939 阅读 · 0 评论 -
单例模式详解
单实例我们在设计某些类时,根据需求,有时只需要一个实例,不想过多浪费内存,这就可以通过单实例的方式。如,我们在使用windows的任务管理器时,弹出的始终是一个窗口,这里如果对象采用多实例模式,那么就会弹出多个窗口,会出现下述两种情况:第一,如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,容易使用户误解,不知道哪一个才是真实的状态,这与需求不符;原创 2016-10-10 21:55:11 · 355 阅读 · 0 评论 -
设计模式C++实现(9)——命令模式
一、简介 Command命令模式为了解决的问题是:当系统请求繁多复杂时,将请求封装到一个对象(Command)中,并将请求的接受者存放到具体的ConcreteCommand类(Receiver)中,从而实现调用操作的对象和操作的具体实现者之间的解耦。 Command 模式的典型结构图为: Command模式结构图中转载 2018-01-08 22:50:03 · 216 阅读 · 0 评论 -
设计模式C++实现(8)——桥接模式
一、简介 Bridge模式是为了解决将将抽象部份与它的实现部分分离,即将抽象(Abstraction)与实现(AbstractionImp)分离,使得二者可以独立地变化,从而尽可能地提高系统模块内部的内聚(Cohesion)、尽可能降低模块间的耦合(Coupling)。 Bridge桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和转载 2018-01-05 23:08:43 · 226 阅读 · 0 评论 -
懒汉式单例和饿汉式单例优缺点
1、时间和空间比较上面两种写法:懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。饿汉式是典型的空间换时间,当类装载的时候就会创建类实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断了,节省了运行时间。2、线程安全(1)从线程安全性上讲,不加同转载 2018-01-04 23:03:28 · 6459 阅读 · 2 评论 -
C++的单例模式与线程安全单例模式(懒汉/饿汉)
1 教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。 上代码: 123456转载 2018-01-04 22:47:57 · 166 阅读 · 0 评论 -
设计模式C++实现(7)——迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍 历的时候,就应该考虑用迭代器模式。同时需要对聚集有多种方式遍历时,可以考虑用迭代器模式。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪 一项等统一接口。迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让转载 2018-01-04 22:21:55 · 154 阅读 · 0 评论 -
设计模式C++实现(6)——备忘录模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍备忘录模式的实现。 备忘录模式:转载 2018-01-03 22:28:53 · 234 阅读 · 0 评论 -
设计模式C++实现(5)——状态模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍状态模式的实现。 状态模式:允许转载 2017-12-26 22:43:30 · 265 阅读 · 0 评论 -
设计模式C++实现(3)——(结构型)装饰模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 装饰模式:动态转载 2017-12-11 21:48:36 · 198 阅读 · 0 评论 -
设计模式C++实现(4)——外观模式、组合模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍外观模式和组合模式的实现。转载 2017-12-19 22:40:50 · 189 阅读 · 0 评论 -
简单工厂模式和策略模式的区别
按一般教程中出现的例子理解:简单工厂模式:客户端传一个条件进工厂类,工厂类根据条件创建相应的产品类对象,并return给客户端,供客户端使用。即客户端使用的是工厂类生产的产品对象。策略模式:客户端创建一个Context类对象a(可以看作是工厂模式中工厂类),创建一个策略对象并传参给对象a,然后客户端使用a对象的某些方法来使用前面传参进来的策略,即客户端是通过a对象使用策略的转载 2017-12-10 23:13:54 · 285 阅读 · 0 评论 -
设计模式C++实现(2)——(行为型)策略模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍策略模式的实现。 策略模式是指定转载 2017-11-29 10:02:50 · 212 阅读 · 0 评论 -
设计模式C++实现(10)——(行为型)观察者模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。 观察者模...转载 2018-08-05 23:52:41 · 353 阅读 · 0 评论