设计模式

设计模式

对于设计模式并不是说这样做有什么原理等,设计模式是开发人员多年开发经验。

一、单例模式

/// 饿汉模式 存在内存泄漏
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

五、观察者模式

https://www.cnblogs.com/xiaxiaopi/p/12524516.html

资料:
https://zhuanlan.zhihu.com/p/575645658

posted @ 2023-10-21 14:32  小海哥哥de  阅读(8)  评论(0编辑  收藏  举报