设计模式
设计模式
对于设计模式并不是说这样做有什么原理等,设计模式是开发人员多年开发经验。
一、单例模式
/// 饿汉模式 存在内存泄漏
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通