【设计模式】工厂模式、单例模式、观察者模式、发布订阅模式

embedded/2024/9/23 16:07:36/

1.工厂模式

class Factory{createProduct(name){return new Product(name);}
}
class Product{constructor(name){this.name=name;}display(){console.log(`product:${this.name}`);}
}//使用
const factory=new Factory();
const p1=factory.createProduct('P1');
const p2=factory.createProduct('P2');
p1.display()
p2.display()

2.单例模式

class Singleton{static instance=null;constructor(){if(Singleton.instance){return Singleton.instance}Singleton.instance=this;}
}//使用
const instance1=new Singleton()
const instance2=new Singleton()

3.观察者模式

class Subject{constructor(){this.observers=[];}addObserver(observer){this.observers.push(observer);}removerObserver(observer){this.observers=this.observers.filter(obs=>obs!==observer);}notifyObserver(){this.observers.forEach(obs=>obs.update());}
}class Observer{constructor(name){this.name=name;}update(){console.log(`Observer ${this.name} has been notified`);}
}
//使用
const subject=new Subject();
const observer1=new Observer('1');
const observer2=new Observer('2');
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notifyObserver();

4.发布订阅模式

class Broker{constructor(){this.subscribers=[];this.state=0;}subscribe(subscriber){this.subscribers.push(subscriber);}setState(state){this.state=state;this.publish();}getState(){return this.state;}publish(){this.subscribers.forEach(sub=>sub.update());}
}class Publisher{constructor(){}changeState(broker,state){broker.setState(state);}
}class Subscriber{constructor(name,broker){this.name=name;this.broker=broker;this.broker.subscribe(this);}update(){console.log(`${this.name}:${this.broker.getState()}`);}
}
//使用
const broker=new Broker();
const publish=new Publisher();
const subscribe1=new Subscriber('s1',broker);
const subscribe2=new Subscriber('s2',broker);
publish.changeState(broker,1);

http://www.ppmy.cn/embedded/115677.html

相关文章

数据结构之——单链表

一、单链表概述 单链表是一种链式存取的数据结构,在计算机科学中有着广泛的应用。它由一系列节点组成,每个节点包含两个主要部分:数据域和指针域。 数据域用于存储节点的数据元素,其类型可以根据具体的应用需求进行定义。例如&a…

Linux相关概念和重要知识点(4)(自举、vim)

1.语言和编译器的发展 (1)汇编语言的出现 计算机只能看懂二进制,但是用二进制实现一个功能就太难了,人们需要发明一种高效的语言。人们抽象出一套编程逻辑,定义了一系列操作,接下来就需要实现它。最初人们…

一起对话式学习-机器学习02——机器学习方法三要素

【一】核方法 首先补充一下核方法,这应是机器学习分类中的内容。 什么是核方法呢?听起来很高级,但理解很简单: 官方定义:核方法是使用核函数表示和学习非线性模型的一种机器学习方法,可以用于监督学习和非监…

深度学习经典模型解析

1. 概述 随着大数据时代的到来和计算能力的飞速提升,深度学习 已成为人工智能领域的核心技术之一。它通过模拟人脑神经元的连接方式,构建多层次的神经网络,能够自动从海量数据中学习复杂的特征表示。深度学习在图像识别、自然语言处理、语音…

如何在SpringCloud中使用Consul进行服务发现与配置管理

Spring Cloud是一个用于构建分布式系统的开发工具包。它提供了一系列解决方案,用于在分布式系统中管理和协调服务发现、配置管理、负载均衡、容错机制等功能。Consul是一种用于服务发现、配置管理和分布式一致性的工具,与Spring Cloud可以很好地集成在一…

安卓学习资源推荐

对于Android对于Android开发的学习资源,开发的学习资源,我可以推荐以下几类资源,这些我可以推荐以下几类资源,这些资源涵盖了从基础知识到高级技能的各个方面,适合不同学习阶段的开发者。资源涵盖了从基础知识到高级技…

HCIA--实验十九:配置接口DCHP

一、实验内容 1.需求/要求: 通过一台5700交换机和一台PC,通过在交换机的接口上配置接口DHCP来实现PC自动获取ip地址。 二、实验过程 1.拓扑图: 2.步骤: 1.给vlan10配置ip地址,进入vlan10开启接口的DHCP&#xff1…

专业视频编辑软件 MAGIX VEGAS Pro v21 中文授权版

MAGIX VEGAS Pro 是由德国MAGIX公司推出的一款专业视频编辑软件,软件支持8K/4K超清视频剪辑制作,具有无可替代的优势,包括业界领先的硬件加速、人工智能驱动的工具、复杂的颜色分级选项、业界领先的HDR支持、大量OFX特效插件和音视频插件脚本…