gpt4 book ai didi

node.js - 针对 Node.js 中的接口(interface)进行编程?

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:23 25 4
gpt4 key购买 nike

依赖注入(inject)和针对接口(interface)的编程是 C# 和 Java 中的标准。我想知道在 Node.js 中也可以实现这一点吗?例如,我正在编写一个内存缓存模块,理想情况下它应该公开一个接口(interface),比如说使用 getKey 和 putKey 两种方法。我可以使用 ioredis 实现一种,而使用普通内存缓存实现另一种。但我的应用程序仅依赖于内存缓存接口(interface)。

最佳答案

Javascript 使用鸭子类型

In computer programming with object-oriented programming languages, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface.

来自 Wikipedia - Duck typing

这意味着您可以使函数期望一个对象作为参数,并假设它具有一些特定的函数或属性。即:

function addAreas(s1, s2){
//We can't know for sure if s1 or s2 have a getArea() function before the code is executed
return s1.getArea() + s2.getArea();
}

要测试一个对象是否具有特定功能,我们可以执行以下操作:

function isShape(obj){
return obj.implements("getArea") && obj.implements("getPerimeter");
}

两者可以组合成以下形式:

function addAreas(s1, s2){
if(isShape(s1) && isShape(s2))
return s1.getArea() + s2.getArea();

throw "s1 or s2 are not a shape!"
}

Here您可以找到有关该主题的精彩博客文章。

在您的示例中,您的两个实现都应该具有 getKey 和 putKey 函数,并且需要具有这些函数的对象的代码必须在执行之前测试它们是否已实现。

关于node.js - 针对 Node.js 中的接口(interface)进行编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35416278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com