
设计模式
文章平均质量分 78
sequenceGO
dev
展开
-
设计模式之单例模式 (模板 智能指针 删除器) 实现【懒汉】
上一篇关于单例模式的实现 主要是基于DCL。但是多线程环境下并不能保证完全线程安全。这篇文章实现的单例:懒汉模式 的单例基于模板和继承线程安全使用智能指针 防止内存泄露效率相对较高实现代码如下:#include #include #include #include using namespace std;template class原创 2016-03-29 15:05:27 · 1513 阅读 · 0 评论 -
设计模式之 原型(Prototype)模式(使用智能指针避免浅拷贝时内存泄露)
上一篇文章指出了原型模式中浅拷贝时出现的一些问题,如内存泄露等问题。下面给出几种可能的解决方案来避免内存泄露。1. 我们让工作简历类继承克隆接口 实现深度拷贝。但这时候会出现内存泄露的问题。(拷贝对象内的工作简历指针无法析构)代码如下:#include #include #include using namespace std;templatecl原创 2016-04-01 13:48:31 · 1387 阅读 · 0 评论 -
设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])
本文介绍设计模式中的原型模式。本质上其实就是克隆。下面以个人简历很工作经历为例。深拷贝版本:#include #include #include using namespace std;templateclass ICloneable{public: virtual T* clone() = 0;};class CWorkExper原创 2016-03-31 23:34:39 · 2215 阅读 · 0 评论 -
设计模式之 创建者(Builder)模式(C++实现)
这篇文章介绍设计模式中 "创建型模式"的第三种 —— 创建者(Builder)模式。创建者模式将复杂对象的构造和表示相分离,同样的构建过程可以创建不同的表示。其强调创建产品的过程是有步骤的,有时候甚至可以强制指定构建次序。其中产品的不同表现形式是通过扩展 构造器 实现的。下面以汽车产品为例进行说明,比如汽车包括:汽车厂商 汽车引擎 汽车底盘 汽车轮胎。一原创 2016-03-31 22:52:39 · 588 阅读 · 0 评论 -
设计模式之 简单工厂模式(C++ 模板实现)
这篇文章在上一篇介绍简单工厂模式的实现基础之上,采用C++模板技术来克服上一篇中提到的缺点。同样以汽车厂生产汽车为例进行说明。代码如下:#include #include using namespace std;class CCarBase{public: virtual void printName() { cout << "汽车厂商:" <<原创 2016-03-30 23:01:33 · 1332 阅读 · 0 评论 -
设计模式之 抽象工厂模式的扩展(C++实现)
上一篇主要介绍了抽象工厂模式。考虑下面一种应用场景:我们需要增加一个产品族,如何实现。当然可以考虑修改抽象工厂 增加相应的方法。但这违反了面向对象编程的原则——开放闭合原则。因此我们需要尽量去扩展 而不是修改。【对扩展开发 对修改闭合】下面给出汽车厂中增加卡车产品族的例子代码如下:#include #include #include原创 2016-03-31 01:53:21 · 590 阅读 · 0 评论 -
设计模式之 抽象工厂模式(C++实现)
这篇文章介绍设计模式中的 抽象工厂模式。目前为止介绍过 简单工厂模式 工厂方法模式。本文要介绍的抽象工厂模式可以看做是 多个工厂方法模式的组合。以汽车厂生产汽车为例进行说明。代码如下:#include #include #include using namespace std;class CCarBase{public: virtual原创 2016-03-30 23:05:16 · 424 阅读 · 0 评论 -
设计模式之 工厂方法模式(C++实现)
这篇文章介绍设计模式中的 工厂方法模式。前面两篇文章介绍了简单工厂模式的介绍和实现。本文同样以汽车厂生产汽车为例介绍工厂方法模式。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态原创 2016-03-30 23:03:17 · 399 阅读 · 0 评论 -
设计模式之 简单工厂模式(C++实现)
这篇文章主要介绍 简单工厂模式 。下面是关于汽车厂生产汽车的一个典型案例。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态 virtual ~CarBase(){} virtual v原创 2016-03-30 22:59:13 · 387 阅读 · 0 评论 -
设计模式之单例模式 (模板 智能指针 删除器) 实现【饿汉】
上一篇实现的是使用模板 智能指针 删除器的懒汉模式单例。这一篇实现饿汉模式的版本。#include #include #include #include using namespace std;template class CEagerSingletonPtr{private: static T m_sg;private: CEagerSingleton原创 2016-03-29 16:39:48 · 711 阅读 · 0 评论 -
设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)
顾名思义:单例模式,指的是仅有一个(类)实例。即:在应用程序的整个生命周期中,任何时刻,某个类(单例类)仅存在唯一一个实例。同时仅提供一个全局访问点。单例的实现一般要求满足:(1) 类构造函数私有(2) 提供一个全局访问点 一般是静态的共有方法一、单例的经典实现代码如下:class Singleton{public: // 全局访问点原创 2016-03-27 02:52:26 · 4151 阅读 · 2 评论 -
设计模式之 概览(设计模式是什么 设计模式分类)
一、设计模式是什么"设计模式描述了对象如何进行通信才能不牵涉相互的数据模型和方法。"通俗讲就是:解决类与类、对象与对象之间耦合性问题。二、设计模式的分类《Design Patterns: Elements of Resualbel Software》一书中将23种设计模式分为以下三类:1. 创建型模式(Creational)与对象创建有关 涉及对象实例化的方式 【共原创 2016-03-28 00:56:30 · 523 阅读 · 0 评论