白话C++设计模式(一)

1.MVC架构模式和MVP架构模式

简单来说就是显示、逻辑、和数据分离,两种模式的主要区别在于数据层能否直接和显示层进行交互。

2.B/S(瘦客户端)和C/S(胖客户端)

一般主要是指web和客户端之间的区别,主要体现在是否有大量的数据和运行支撑在你的本地环境上。

3.简单工厂模式

定义一个类,这个类被称为工厂,你想要什么类型的指针,告诉它,它给你去生产一个对象给你用。一个工厂生产N个类型的对象。

导致的后果就是,想要工厂生产新的对象,你就得修改工厂,破坏了工厂的闭合。

4.工厂模式

定义一个工厂基类,想生产哪种类型的对象,就再从工厂基类上继承一个工厂子类,N个工厂生产N个类型的对象。保持了工厂的闭合,但是增加一个生产对象你就得增加一个工厂。

5.抽象工厂模式

工厂模式跟简单工厂模式结合了一下。定义工厂基类,每个工厂子类生产拥有共同基类的产品子类对象。每个工厂子类生产N个类型的对象,但有不止一个工厂子类。添加一类产品是闭合的,但是对于某一类产品添加具体的产品是开放的。

6.策略模式

类内声明一个策略基类,往里传这个策略基类的子类对象。调用的时候就是调用的你想要的那个策略子类方法了。作用就是你自己类结构不变的情况,能够通过传入的策略子类对象来实现不同的功能。(直接用回调函数不香吗?

7.适配器模式

有些祖传代码不敢动,你就在这些代码的接口上再包一层,比如说你有个C++的项目返回值是vector,但你现在是在Qt环境下,想要QVector的返回值,你就包一层把vector转换成QVector来去适配你现在的代码,反正我是这么用的。

8.单例模式

程序周期里面只允许存在一个实例,方法就是私有化构造函数,根据需求也可以私有化拷贝构造等拷贝相关的函数。开放一个接口返回给调用方一个内部已经声明好的实例。懒汉模式跟饿汉模式就不说了,字面意思。

9.原型模式

个人感觉就是手写深拷贝。

 

你可能感兴趣的:(Qt)