![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式与重构
奋斗Andy
努力不一定成功,成功离不开努力!
展开
-
重构之22种代码的坏味道
概述:在编写代码时,随着代码量的增加,会时不时的需要重构来提高代码的质量。以下是22中代码的坏味道,如果你的代码中也有这些,那快快来按照这些方法重构你的代码吧!1.Duplicated Code(重复的代码) --->难维护 [解决方法]:提取公共函数。臭味行列中首当其冲的就是Duplicated Code。如果你在一个以上的地点看到相同的程序结构,那么当可肯定转载 2016-11-22 17:01:48 · 5355 阅读 · 0 评论 -
单例的智能指针+宏的实现
如果要创建一个单例的数据库连接池 ConnectionPool,那么实现单例部分的代码和 ConfigUtil 的几乎一样,声明 private 的构造函数,拷贝构造函数,析构函数,赋值操作符,QScopedPointer instance,friend struct QScopedPointerDeleter,几乎完全一样的 getInstance() 等,这些代码几乎都是重复的,每个单例的类这转载 2016-10-10 17:34:13 · 659 阅读 · 0 评论 -
单例的简单实现
用简单直观的方式来实现一个单例的类 ConfigUtil,这里不使用宏,模版等技术,先了解实现一个单例类的理论知识,然后在此基础之上进行思考,优化,最终让我们的实现真正的达到实用的目的,而不只是功能上可用,但是质量却很不好。实现单例时,需要注意以下几点:C++ 的书里经常强调:一个类,至少要提供构造函数,拷贝构造函数,析构函数,赋值运算操作符,尤其是有成员变量是指针类型,保存指针的数组转载 2016-10-10 17:31:03 · 499 阅读 · 0 评论 -
单例的模版实现
相信现在大家对单例的实现已经成竹于胸,接下来,介绍使用模版技术实现单例。Singleton.h对于不同的类型,只能使用类模版 Singleton 生成一个唯一的对象。#ifndef SINGLETON_H#define SINGLETON_H#include #include template typename T>class Singleton {public:转载 2016-10-10 17:36:25 · 451 阅读 · 0 评论 -
单例的智能指针实现
前面提出了一个问题:可不可以不需要我们手动的调用 release() 函数,程序结束前自动的删除单例类的对象呢?答案是可以,使用智能指针可以达到这个目的,这里我们使用的是 Qt 的 QScopedPointer 来实现,也可以使用标准的 C++ 的智能指针。Qt 的帮助文档里对 QScopedPointer 的描述是The QScopedPointer class stores a p转载 2016-10-10 17:33:35 · 2247 阅读 · 0 评论 -
单例的模版+宏的实现
下面,对 单例的模版实现 使用宏进一步简化。Singleton.h在 Singleton.h 的最后面添加宏 SINGLETON#ifndef SINGLETON_H#define SINGLETON_H#include #include template typename T>class Singleton {public: static T& getInst转载 2016-10-10 17:37:56 · 893 阅读 · 0 评论 -
设计模式之三种工厂模式与实例详解
这两天学习了下设计模式中的工厂模式,写个总结方便以后记忆和查看。工厂模式包括:简单工厂模式、工厂方法模式和抽象工厂模式,其中简单工厂模式不是23种标准的设计模式 并且简单工厂模式也没有遵循开闭原则,抽象工厂模式在每一个系列的子系列中符合开闭原则,整个系列不符合,下面将通过实例分别来讲解三种设计模式一 简单工厂模式参与者:工厂角色:是简单工厂模式的核心,它负责实现原创 2017-09-09 00:31:02 · 1662 阅读 · 0 评论 -
设计模式之原型模式与实例
意图用原型实例指定穿件对象的种类,并通过拷贝这些原型创建新对象参与者1 抽象原型(Prototype) : 声明一个克隆自身的接口2 具体原型(ConcretePrototype):实现一个克隆自身的操作3 客户(Client): 让一个原型克隆自身从而穿件一个新的对象适用性当一个系统应该独立于它的产品创建、构成和表示时,要使用原型模式当要实例化的类原创 2017-09-17 09:16:40 · 452 阅读 · 0 评论 -
多态、策略模式和简单工厂模式的理解
最近在看设计模式一本书,发现策略模式和简单工厂模式很像,刚刚开始我还以为是一样的,总感觉没什么区别,后来才看明白,有一点点个人的理解,记录下来,方便下次复习以及理解。概念理解:多态:C++的多态性用一句话概括就是,在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据 对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基原创 2017-01-04 11:42:44 · 3370 阅读 · 1 评论 -
设计模式学习之生成器模式与实例
使用意图:将一个复杂对象的构建与他的表示分离,是的同样的构建过程可以创建不同的表示参与者:1 抽象生成器(builder)构造一个使用生成器的接口2 具体生成器(concreteBuilder)实现抽象生成器的接口和装配改产品的各个部件定义并明确它所创建的表示提供一个检索产品的接口(getProduct)3 产品(product)表示被构建的复杂原创 2017-09-11 22:53:06 · 1433 阅读 · 0 评论