首页 > 其他分享 >常见的设计模式

常见的设计模式

时间:2024-09-20 21:13:23浏览次数:7  
标签:observer int s1 常见 观察者 son 设计模式 public

单例模式(饿汉和懒汉)
//饿汉式单例模式

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);
}

标签:observer,int,s1,常见,观察者,son,设计模式,public
From: https://www.cnblogs.com/ZhangWuyue/p/18423293

相关文章

  • 数据结构 ——— 常见的时间复杂度计算例题(上篇)
    目录前言例题1:例题2:例题3:例题4:前言在上一章讲解了时间复杂度的概念,以及用大O的渐进表示法表示时间复杂度数据结构———算法的时间复杂度-CSDN博客接下来利用C语言代码的例题,更深一步的掌握用大O的渐进表示法表示代码的时间复杂度例题1:代码演示:voidFunc......
  • 23种设计模式,纯简单理解,面试必备
    文章目录创建型设计模式1.单例设计模2.工厂设计模式3.抽象工厂设计模式4.建造者设计模式5.原型设计模式结构型设计模式1.适配器设计模式2.桥接设计模式3.组合设计模式4.装饰器设计模式5.外观设计模式6.享元设计模式7.代理设计模式行为型设计模式1.访问者设计模式2.模板......
  • 常见格式的MIME TYPE对照表
    //常见格式的MIMETYPE对照表constACCEPT_FILE_TYPE_MAP={'.3gp':'video/3gpp','.apk':'application/vnd.android.package-archive','.asf':'video/x-ms-asf','.avi':'video/x-msvi......
  • 抽象工厂模式-设计模式
    抽象工厂模式(AbstractFactoryPattern)在Java中是一种非常有用的设计模式,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这个模式提供了一种创建对象的最佳方式,它封装了创建对象的细节,并允许客户依赖于抽象类型而不是具体类型。以下是一个简单的Java案例,展示了抽象工......
  • sentinle常见问题FAQ
    熔断和限流的区别上图的问题就是综合服务调用外部服务,当B服务出现工作线程出现阻塞导致大量请求排队,导致超时,进而影响了综合服务。我们从2个视角来看1.从外部服务的视角当工作线程出现阻塞是因为服务出现了超过自身能够处理的流量导致阻塞这个时候往往我们就需要限流。阻塞又......
  • 常见的前端攻击
    1.跨站脚本(XSS)跨站脚本攻击(XSS)是一种注入攻击,攻击者通过将恶意脚本注入到网页中,欺骗用户浏览器执行,从而窃取用户敏感信息或破坏网站。XSS攻击是Web应用程序中最常见的安全威胁之一,也是造成重大安全事故的常见原因。攻击方式反射型XSS:攻击者将恶意脚本注入到......
  • 【Swagger】Swagger入门和一些常见的问题
    什么是Swaggerswagger(丝袜哥)是当下比较流行的实时接口文档生成工具。前后端分离后,前后端交流比较重要的东西,就是接口文档。离线文档,最大的弊端就是接口程序发生变动的时候,需要回过头来维护上面的内容,确实比较玛法。实时接口文档可以根据代码来自动生成相应的接口文档。根据代......
  • Java Map和List常见操作
    Javamap详解-用法、遍历、排序、常用API等-Java初级码农-博客园(cnblogs.com)//创建实例importjava.util.*;publicclassListDemo{publicstaticvoidmain(String[]args){List<String>arrayList=newArrayList<>();//创建ArrayList实例......
  • 帝国CMS刷新失败,常见原因及解决方法有哪些?
    帝国CMS刷新失败可能由多种原因造成,以下是一些常见的原因及相应的解决方法:常见原因及解决方法服务器配置问题PHP版本过低:确保PHP版本至少为5.6或更高版本。缺少必需的PHP扩展:确保安装了必要的PHP扩展,如gd、mbstring、iconv等。内存限制不足:增加PHP的最大内存限制,通常建议......
  • 使用 RecyclerView 时,有哪些常见的性能优化技巧可以分享?
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点使用RecyclerView时,性能优化是确保流畅用户体验的关键。以下是一些常见的性能优化技巧:1、减少布局复杂性:尽量简化列表项的布局,减少视图嵌套层次,可以使用Const......