首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存储库模式-- node.js中的实际用例及实现

存储库模式-- node.js中的实际用例及实现
EN

Stack Overflow用户
提问于 2021-04-24 12:14:45
回答 1查看 5.9K关注 0票数 2

请有人解释一下这个模式的例子有什么用吗?

我感到困惑的是,我可以在任何我想要的地方拥有数据库实例,而且我可以灵活地执行任何操作,我错了吗?特别是

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-24 12:57:14

存储库模式是一种抽象数据访问的策略。

这就像在应用程序和数据之间放置一个通用适配器一样,所以使用什么数据存储技术并不重要。您的应用程序所需要的只是定义了对新项目的操作,它不应该关心它是如何存储的,或者它来自哪里。

而且,没有必要提到更改的所有影响都将从一个地方处理,而不是通过代码级联!

就我个人而言,我喜欢这个设计模式,因为它只允许我在第一步就关心我的业务逻辑,而不是处理各种数据库,除此之外,它还解决了我在编写测试时遇到的大量麻烦!因此,我可以简单地享受模拟版本的操作,而不是顽固地或监视数据库,这可能会让人头疼。

现在让我们用js实现一个示例,它可以像下面的代码一样简单(当然,它是一个简化的示例)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// userRepository.js
const userDb = [];

module.exports = {
  insert: async (user) => userDb.push(user),
  findAll: async () => userDb,
};

下面是我如何使用这种模式,首先,我在5分钟内编写了如下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// userRepository.js
const userDb = new Map();

module.exports = Object.freeze({
  findById: async (id) => userDb.get(id),
  insert: async (user) => userDb.set(user.id, user),
  findAll: async () => Array.from(userDb.values()),
  removeById: async (id) => userDb.delete(id),
  update: async (updatedUser) => {
    if (!userDb.has(updatedUser.id)) throw new Error('user not found');
    userDb.set(updatedUser.id, { ...userDb.get(updatedUser.id), ...updatedUser });
  },
});

然后,我开始为刚刚编写的存储库和业务用例等…编写单元测试。

任何时候,只要我能简单地使用一个真正的数据库,我就会感到满意,因为它只是一个IO机制,不是吗?:)所以在上面的代码中,我将用一个真实的数据库替换userDb,并编写真正的数据访问方法,当然,我希望我的所有测试都能通过。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67247047

复制
相关文章
Java中的单例模式实现
饿汉式 class Bank{ private Bank(){} private static Bank instance = new Bank(); public static Bank getInstance(){ return instance; } } 懒汉式 class Order{ private Order(){} private static Order
切图仔
2022/09/14
4730
Python中的单例模式的几种实现方式的及优化
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,
用户1214487
2018/01/24
1.2K0
Java中几种单例模式的实现
以上为饿汉式单例模式简单实现,此种方式不会产生线程不安全情况,且只会创建一个对象。
砒霜拌辣椒
2023/08/23
1920
单例模式的几种实现方式及对比
单例模式是设计模式中最简单也是最常用的模式之一,所谓单例就是在系统中只有一个该类的实例。
编程大道
2019/09/07
6660
java单例模式有什么用_java单例模式代码实现
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169701.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
2760
java单例模式——详解JAVA单例模式及8种实现方式
一.单例模式的定义: 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
全栈程序员站长
2022/09/08
4570
java单例模式——详解JAVA单例模式及8种实现方式
面试:Spring中单例模式用的是哪种?
面对这个问题,我也在做模拟面试时问过很多人,大部分都会回答Spring中的单例模式。但是只要追问:单例模式有很多种写法,那Spring中用的是哪一种呢?于是很多朋友一脸懵。
田维常
2023/09/26
3180
面试:Spring中单例模式用的是哪种?
在Python中实现单例模式
有些时候你的项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在Python中实现单例模式并不是什么难事。以下总结几种方法: 使用类装饰器 使用装饰器实现单例类的时候,类本身并不知道自己是单例的,所以写代码的人可以不care这个,只要正常写自己的类的实现就可以,类的单例有装饰器保证。 def singleton(cls): instancec = {} def _wrapper(*args,**kwargs): if cls not in instance
Jetpropelledsnake21
2018/05/02
1.2K0
面向对象设计模式--单例模式详解+实际应用(Java)
保证了一个类只有一个实例,并且提供了一个全局访问点。单例模式的主要作用是节省公共资源,方便控制,避免多个实例造成的问题。
飞天葫芦侠
2023/03/20
2.3K0
面向对象设计模式--单例模式详解+实际应用(Java)
在 Spark 中实现单例模式的技巧
在 Spark 中实现单例模式的技巧,通过使用对象作为单例实例,解决了在集群模式下使用单例模式的问题。
AlgorithmDog
2017/12/29
2.4K0
在 Spark 中实现单例模式的技巧
Python中的单例模式有几种实现方式?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!
程序员小猿
2021/01/19
5150
JAVA中各种单例模式的实现与分析
单例模式是学习设计模式过程中最基本的一个设计模式,基本上一开始学习就会学到单例模式,实际上在java中实现单例模式有很多种写法,不同写法也会导致不同的问题。 那么究竟哪些写法能用,而哪些写法不能用,或者不同实现方法在什么场景下能使用。本文对现有的9种单例模式的实现方式进行分析。
冬天里的懒猫
2021/09/06
3940
单例模式 实现
上面那种直接在方法上加锁的方式其实不够好,因为在方法上加了内置锁在多线程环境下性能会比较低下,所以我们可以将锁的范围缩小
Krry
2018/12/09
1.2K0
单例模式作用特点及常见的单例模式分析(6种单例模式分析)
一,饿汉式 * @Description 饿汉式单例 * 饿汉式单例关键在于singleton作为类变量并且直接得到了初始化,即类中所有的变量都会被初始化 * singleton作为类变量在初始化的过程中会被收集进<clinit>()方法中,该方法能够百分之百的保证同步, * 但是因为不是懒加载,singleton被加载后可能很长一段时间不被使用,即实例所开辟的空间会存在很长时间 * 虽然可以实现多线程的唯一实例,但无法进行懒加载;
用户7353950
2023/02/23
4900
单例模式作用特点及常见的单例模式分析(6种单例模式分析)
单例模式的各种实现
单例模式的主要优点如下: (1)    单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严 格控制客户怎样以及何时访问它。 (2)    由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销 毁的对象单例模式无疑可以提高系统的性能。 (3)    允许可变数目的实例。基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获 得指定个数的对象实例,既节省系统资源,又解决了单例单例对象共享过多有损性能的问 题。 2.主要缺点 单例模式的主
小小明童鞋
2018/06/13
7250
Java 所有 单例模式 实现及优缺点总结
单例模式作为开发过程中最常用的设计模式之一,是程序员必须了解和掌握的一种设计模式,虽然单例的实现方式和手段有很多种,但每一种都有着各自的优缺点,你是否真正的了解了各自的差异?最终如何在代码中运用,就需要我们对每一种实现方式都了如指掌方可运筹帷幄。
一行Java
2022/04/07
1550
策略模式在实际业务中的应用
策略模式主要由以上三个身份组成,这里我们就不过多及时策略模式的基础知识,默认大家已经对策略模式已经有了一个基础的认识。
一个程序员的成长
2021/11/02
7890
策略模式在业务中的实际应用
策略模式主要由以上三个身份组成,这里我们就不过多介绍策略模式的基础知识,默认大家已经对策略模式已经有了一个基础的认识。
一个程序员的成长
2021/11/10
3510
策略模式在业务中的实际应用
Kotlin中的单例模式
在编程中,我们都应该接触到设计模式,无论是从时间总结,亦或者是从书上习得后尝试使用。这其中单例模式,是我们编程过程中很常见,也很简单的一种设计模式。我曾经写过一篇比较通用的关于该模式的文章,即单例这种设计模式。
技术小黑屋
2018/08/29
7100
点击加载更多

相似问题

用Laravel实现存储库模式

33

用PetaPoco实现存储库模式

22

用RxJava实现存储库模式

11

用KVC实现单例模式

15

用扭曲来实现单例模式

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文