一、单例模式
1.1 含义
单例模式适用于生成唯一对象、需要频繁创建和销毁的环境。
需求: 1. 构造函数、operator=、拷贝构造函数 私有化
2. 构造一个静态指针
3. 构造一个静态函数创建实例
1.2 懒汉模式
懒汉:在第一个调用函数是才申请空间,但容易产生线程安全问题。
class SingleTon {
private :SingleTon() {}SingleTon(const SingleTon& s) = delete;SingleTon& operator=(const SingleTon& s) = delete;
public :static SingleTon* singleTon;static SingleTon* getInstance() {if (singleTon == nullptr) {singleTon = new SingleTon;}return singleTon;}
};
SingleTon* SingleTon::singleTon = nullptr;int main(int argc, char* argv[]) {SingleTon* ss = SingleTon::getInstance();return 0;
}
1.3 饿汉模式
饿汉:直接在类外创建对象。程序已启动就申请了空间,线程安全,但占用资源。
class SingleTon {
private :SingleTon() {}SingleTon(const SingleTon& s) = delete;SingleTon& operator=(const SingleTon& s) = delete;
public :static SingleTon* singleTon;static SingleTon* getInstance() {return singleTon;}
};
SingleTon* SingleTon::singleTon = nullptr;int main(int argc, char* argv[]) {SingleTon* ss = new SingleTon;return 0;
}
二、工厂模式
2.1 需求:
1. 创建一个抽象工厂类:所有具体工厂类的父类
2. 创建与产品对应的工厂类:负责实例化产品对象
3. 提供一个抽象产品类:所有产品的父类
4. 提供一个或多个产品类:共产模式所创建的具体对象实例