C++常用的设计模式
单例模式:
单例模式:确保一个类只有一个实例,并且这个实例化向整个系统提供
(例如只有一台打印机,可以有多个打印任务队列,但是只能有一个正在打印)。
单例模式又分为(饿汉模式,懒汉模式)两种
饿汉模式:程序运行即创建对象并实例化,静态实现所以线程是安全的
懒汉模式:创建对象不实例化,需要的时候才实例化,线程不安全需要(加锁)
工厂模式:
建立对象的类就如一个加工厂,建立对象就如一个产品,使用产品而不用在乎产品如何生产。
工厂模式分为三种(简单工厂模式,工厂方法模式,抽象工厂模式)
1 简单工厂模式(一个工厂生产两种产品)
:即根据工厂里的对象决定实例化什么产品
2 工厂方法模式(两个工厂,一个工厂只生产一种产品)
:定义一个创建对象的接口
3 抽象工厂模式(两个工厂,每个工厂可以产两种产品)
:提供一个创建相互依赖对象的接口,而无需指定它们具体的类。
策略模式
策略模式:即每一个类都是一个锦囊,但是锦囊之间可以替代(即功能一样,实现的方法不一样)
观察者模式
定义一对多的依赖关系,让多个观察者对象同时监听一个主对象。当这个主对象的动态发生变化时,会通知所有观察者对象,让其更新自己。(例如订阅邮件)
建造者模式
产品内部表象可以变化,客户不必只要内部组成,可以强制执行一种分步骤进行的建造过程。用一个接口完成不同的操作。(例如登录QQ,自动选择所在地区的服务器)
访问者模式
对于数据结构相对未确定的系统,把数据结构和基于数据结构的操作解耦合,让操作集合可以自由演化。(做任何更改不需要修改基类)
优点:增加新的操作很容易,通过增加一个新的访问者类。
桥接模式
将抽象化与实现化脱离,使得二者可以独立的变化。
适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。
合成模式
将对象组织到树结构中,用来描述整体与部分的关系。
处理对象的树结构的模式。
解释器模式
给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子
参考:https://www.cnblogs.com/chengjundu/p/8473564.html
https://www.cnblogs.com/coderzjz/p/12688333.html