设计模式
设计模式
对于设计模式并不是说这样做有什么原理等,设计模式是开发人员多年开发经验。
一、单例模式
/// 饿汉模式 存在内存泄漏
class Singleton {
public:
static Singleton* getInstance() {
cout << "func::getInstance" << endl;
return instance;
}
private:
Singleton(){
cout << "func::Singleton" << endl;
}
~Singleton(){
cout << "func::~Singleton" << endl;
}
static Singleton* instance;
};
//// initialize
Singleton* Singleton::instance = new Singleton();
//懒汉模式 存在内存泄漏
class Singleton{
public:
static Singleton* getInstance() {
if (instance == nullptr) {
mtx.lock();
if (instance == nullptr) {
instance = new Singleton();
}
mtx.unlock();
return instance;
}
return instance;
}
private:
Singleton(){
cout << "func::Singleton" << endl;
}
~Singleton(){
cout << "func::~Singleton" << endl;
}
static Singleton* instance;
static mutex mtx;
};
Singleton* Singleton::instance = nullptr;
mutex Singleton::mtx;
//利用局部静态变量线程安全的性质实现 无锁版本(懒汉模式),无内存泄漏
class Singleton{
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
private:
Singleton(){
cout << "func::Singleton" << endl;
}
~Singleton(){
cout << "func::~Singleton" << endl;
}
};
二、工厂模式
三、适配器模式
四、装饰者模式
装饰者模式指的是动态的将责任附加到对象上,想要扩展其功能,装饰者提供有别于继承的另一种选择。(参考《Head First 设计模式》)
个人理解:装饰者就是一种类包类 就是在构造函数里面,添加类作为参数。
https://blog.csdn.net/m0_73443478/article/details/129216288