# 设计模式

# UML

# 类与类之间的关系

  • 继承关系
  • 关联关系
  • 聚合关系
  • 组合关系
  • 依赖关系

# 设计模式三大原则

# 单一职责原则

# 单例模式

在一个项目中,全局范围内,某个类的实例一切仅有一个,通过这个唯一的实例向其他模块提供数据,这种模式就是单例模式。单例模式的典型的应用就是任务队列.

# 饿汉模式

class Singleton{
public:
	static Singleton* getInstance(){
		return Instance;
	}
private:
	Singleton(){};	//  屏蔽 new 操作符
	static Singleton* Instance;	// 类的静态变量
};
Singleton* Singleton::Instance = new Singleton;
  • 没有线程安全问题

# 懒汉模式

class Singleton{
public:
	static Singleton* getInstance(){
		if(Instance == nullptr)	Instance = new Singleton();
		return Instance;
	}
private:
	Singleton(){};
	static Singleton* Instance;
};
Singleton* Singleton::Instance = nullptr;
  • 有线程安全问题,需要使用互斥锁(双重检查锁定 DCL, Double Checked Lock + 原子变量、静态局部变量)
class Singleton{
public:
	static Singleton* getInstance(){
     	m_mutex.lock();
        if(Instance == nullptr)	Instance = new Singleton();
        m_mutex.unlock();
        return Instance;
    }
private:
    Singleton(){};
	static Singleton* Instance;
   	static mutex m_mutex;
};
Singleton* Singleton::Instance = nullptr;
Singleton* Singleton::mutex;
  • 双重检查锁
class Singleton{
public:
	static Singleton* getInstance(){
        if(Instance == nullptr){
            m_mutex.lock();
            if(Instance == nullptr)	Instance = new Singleton();
            m_mutex.unlock();  
        }
        return Instance;
    }
private:
    Singleton(){};
	static Singleton* Instance;
   	static mutex m_mutex;
};
Singleton* Singleton::Instance = nullptr;
Singleton* Singleton::mutex;

# 工厂模式

# 简单工厂模式

# 工厂模式

# 抽象工厂模式

Edited on Views times

Give me a cup of [coffee]~( ̄▽ ̄)~*

Value WeChat Pay

WeChat Pay