单例模式(饿汉和懒汉)
//饿汉式单例模式
include
using namespace std;
class son {
public:
son(const son&) = delete;
son& operator=(const son&) = delete;
son(const son&&) = delete;
son& operator=(const son&&) = delete;
static son& getinstance() {
static son a;
return a;
}
private:
son() = default;
};
int main() {
}
简单工厂模式是一种创建型设计模式,它通过一个专门的类来决定实例化哪一个具体类。简单工厂模式把对象的创建过程封装起来,客户端通过调用工厂类的一个静态方法获取所需对象,而不需要直接使用 new。
工厂方法模式也是一种创建型设计模式,它通过定义一个抽象工厂接口,让具体子类来决定实例化哪一个产品类。客户端通过调用工厂接口来创建对象,但实际创建的对象是由具体的工厂子类决定的。
观察者模式:观察者模式首先抽象一个观察者接口,然后用不同的观察者类继承观察者接口,然后通过一个主题类,里面有attach函数用于观察者注册到主题上,有notify函数,进行主题状态更新通知给观察者。
include
include
using namespace std;
//观察者模式
class observer {
public:
virtual void update(int state) = 0;
virtual ~observer() {}
private:
};
class vaildobserver:public observer {
public:
vaildobserver(string Aname) {
name = Aname;
}
void update(int state) {
cout << "观察者" << name << "收到了状态更新信息:" << state << endl;
}
private:
string name;
};
class subject {
public:
void attach(observer* ob) {
sub.push_back(ob);
}
void notify(int state) {
for (auto it = sub.begin(); it != sub.end(); it++) {
(it)->update(state);
}
}
private:
vector<observer> sub;
};
int main() {
observer* b1 = new vaildobserver("小明");
observer* b2 = new vaildobserver("小牛");
subject s1;
s1.attach(b1);
s1.attach(b2);
s1.notify(10);
s1.notify(20);
}