Veitch Kyrie's Blog

Thinking will not overcome fear but action will.

设计模式(七)桥(Bridge)模式

每天一个设计模式

设计模式(七)桥(Bridge)模式 Bridge 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化。那么为了应对这种“多维度的变化”(即两个以上变化的原因)的系统,可采用Bridge模式来进行设计,使系统中类的个数更少,且系统扩展更为方便。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。 思想 :将一个类得抽象定义和具体实现解耦 场景...

设计模式(六) C++ 适配器(Adapter)模式

每天一个设计模式

设计模式(六) C++ 适配器(Adapter)模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。 比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下 电压才可以。这个变压器就是个适配器。适配器模式有类适配器和对象适配器两种模式,我们将分别讨...

设计模式(五)C++ 单例(Singleton)模式

每天一个设计模式

设计模式(五)C++ 单例(Singleton)模式 单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。 一般情况下,我们建立的一些类是属于工具性质的,基本不用存储太多的跟自身...

设计模式(四) C++ 原型(Prototype)模式

每天一个设计模式

设计模式(四) C++ 原型(Prototype)模式 原型(Prototype)模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 思想:克 隆一个已有的类的实例(大家相比都用过甚至写过类的Clone实现,应该很容易理解了)。 场景:应 用Clone的场景应该说非常多,理想情况下我当然希望任何类都能Clone, 需要的时候就能Clone一份一模一样的出来。 实现...

程序设计模式(三)Builder

每天一个设计模式

程序设计模式(三)Builder #include <iostream> using namespace std; class Product{ public: Product(){} ~Product(){} void setPartA(const string &s){ this->m_PartA = s;}; void setPartB(const...

程序设计模式(二) C++抽象工厂(Abstract Factory)模式

每天一个设计模式

程序设计模式(二) C++抽象工厂(Abstract Factory)模式 抽象工厂跟工厂方法模式可能区分有点模糊:工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。抽象工厂模式主要用来实现生产一系列的产品。 思想:不直接通过对象的具体实现类,而是通过使用专门的类来负责一组相关联的对象的创建。 场景:最典型的应用场景是:您只想暴露对象的接口而不想暴露具体的实...

设计模式(一)之工厂模式(Factory Method)

每天一个设计模式

设计模式(一)之工厂模式(Factory Method) 思想:Factory Method的主要思想是使一个类的实例化延迟到其子类。 场景:典型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者实际实例化的对象(可能是需要对象的某个子类中的一 个)不确定,或者比较容易变化。此时,如果直接将实例化过程写在某个函数中,那么一般就是if-else或...

C++ 读写CSV

关于csv格式文件的读写

C++ 读写CSV 首先通过rand_device 产生随机种子,然后通过mt199937 设置随机引擎,通过平均分布产生随机数,调用了分布算法产生的每个随机值都依赖与上一个随机值产生。 通过读取csv文件,csv文件都是用逗号分割,获取字符串,然后通过分割函数,将分割字符串存进容器,最后通过模板函数stringstream实现转换 #include <iostream> ...

关于STL vector中的swap

STL中swap的理解

STL vector中的swap std::vector::swap void swap (vector& x); Swap content Exchanges the content of the container by the content of x, which is another vector object of the same type. Sizes ma...

map按value值排序

map按value值排序 map默认是按key值从小到大排序的 按value值排序: 想直接用sort排序是做不到的,sort只支持数组、vetctor等的排序,所以我们可以先把map装进pair里,然后再放入vector,自定义sort实现排序 假设已有一组map<string,int>类型的数mp,则具体实现过程为: #include <algorithm&g...