栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++总结 设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++总结 设计模式

加粗样式
c++11及以上使用static局部变量就可以实现singleton了,其初始化和线程安全性质由c++语言规范保证
单例模式定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。条件:该类不能被复制。该类不能被公开的创造。
单例模式实现方式
1.懒汉式设计模式实现方式懒汉模式的特点延迟加载,配置文件的实例到用到的时候才会加载
1.1 静态指针 + 用到时初始化
1.2 局部静态变量
2.饿汉式设计模式没有多线程的问题
2.1直接定义静态对象
2.2静态指针 + 类外初始化时new空间实现

2.1直接定义静态对象
class Singleton {
public:
static Singleton& GetInstance();
private:
Singleton(){} Singleton(const Singleton&);
Singleton& operator= (const Singleton&);
private: static Singleton m_Instance; };
Singleton Singleton::m_Instance;
Singleton::GetInstance() { return m_Instance; }

//函数调用 Singleton& instance = Singleton::GetInstance();

工厂设计模式 定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生产,有良好的封装性,既做到了解耦,也保证了最少知识原则。
简单工厂模式、工厂方法模式、抽象工厂模式
//程序实例(简单工厂模式)
有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂

enum CTYPE {COREA, COREB};     
class SingleCore    
{    
public:    
    virtual void Show() = 0;  
};    
//单核A    
class SingleCoreA: public SingleCore    
{    
public:    
    void Show() { cout<<"SingleCore A"< 

工厂方法模式
这家生产处理器核的产家赚了不少钱,于是决定再开设一个工厂专门用来生产B型号的单核,而原来的工厂专门用来生产A型号的单核。这时,客户要做的是找好工厂,比如要A型号的核,就找A工厂要;否则找B工厂要,不再需要告诉工厂具体要什么型号的处理器核了。下面给出一个实现方案:

//程序实例(工厂方法模式)
class SingleCore    
{    
public:    
    virtual void Show() = 0;  
};    
//单核A    
class SingleCoreA: public SingleCore    
{    
public:    
    void Show() { cout<<"SingleCore A"< 

抽象工厂模式
这家公司的技术不断进步,不仅可以生产单核处理器,也能生产多核处理器。现在简单工厂模式和工厂方法模式都鞭长莫及。抽象工厂模式登场了。它的定义为提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。具体这样应用,这家公司还是开设两个工厂,一个专门用来生产A型号的单核多核处理器,而另一个工厂专门用来生产B型号的单核多核处理器,下面给出实现的代码:

//程序实例(抽象工厂模式)
//单核    

class SingleCore     
{    
public:    
    virtual void Show() = 0;  
};    
class SingleCoreA: public SingleCore      
{    
public:    
    void Show() { cout<<"Single Core A"< 

装饰器设计模式
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式
优点:
装饰器是继承的有力补充,比继承灵活。在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用;
缺点:
装饰模式会增加许多子类,过度使用会增加程序得复杂性。

观察者设计模式
指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(QT的信号与槽)

设计模式的学习可以通过C++ QT框架来学习,QT中有许多的设计模式应用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号