algorithm - 尝试确定数据注入(inject)方法是否已有名称

标签 algorithm graph

假设我们有一个“汽车”类,它具有不同的数据(制造商、型号、颜色、制造日期、注册日期等)。该类没有获取数据的方法,但它知道从另一个对象获取数据(通过构造函数发送,我们简称为 DS)。- 需要更新更改时也是如此。

方法 getColor() 将像这样实现

if(! this->loaded('color')){

 this->askDS('color') // this will do the necesarry work to generate a request to DS

}

return this->information('color');

到目前为止还没有什么特别的。没有我想知道它是否有名称的部分,或者是否有库/框架已经这样做了。

DS 有一个基于需要数据的类动态注册的方法列表。对于汽车,我们有:

  1. 输入:汽车序列号​​,输出:用于读取数字以提取原始值的方法
  2. 输入:汽车原始颜色值,输出:颜色代码
  3. 输入:汽车颜色代码、制造商、年份、模式,输出:人类可读的颜色(例如海军蓝)

现在,DS或任何方法都没有使用命令从序列号开始并返回蓝色的有序列表,但如果可以从一组数据构建一个方法链,它可以按顺序运行它们并获得所需的数据。

对于我们上面的示例,DS 按顺序运行 1、2、3,并将所有方法产生的数据注入(inject)到需要它的类对象中。

现在,如果汽车需要注册信息,我们可以使用方法 (4) 通过 API 请求从警察数据库中获取该信息。

因此,给定: - 一种模型(类/对象) - 采用固定输入列表(对象属性)并给出固定输出列表(对象属性)的方法列表 - 一个类 DS,它可以粘合方法并运行模型所需的方法,以从属性 A(串行)到属性 B(人类可读颜色),而模型或 DS 没有预配置的方法来获取此数据,但发现它是需要。

它有名称还是已经在某处实现了?

我已经实现了一个非常基本的原型(prototype),它工作得很好,我认为这个实现方法有一些有用的特性:

  • 如果您有一组执行 sql 查询的方法,然后您的应用程序切换到使用 api,您只需要更改方法而不必触及应用程序的任何其他部分

  • 当寻找解决对象“需要”的方法链时,您可以找到一个方法链,运行它,如果它失败,继续寻找基于当前可用数据的另一个方法列表 -所以如果一条数据有多个来源,它可以尝试多个版本

  • 从上面的段落开始,我可以从一个只有用于数据检索的 sql 查询的应用程序开始 - 当我发现应用程序的一部分使 sql server 过载时,我可以添加一个方法来从缓存中检索数据成本低于数据库(或多层缓存,每个都有不同的成本)

  • 我可能会以与缓存相同的方式在混合中添加业务日志,并根据用户位置/选项呈现不同的数据

  • 这需要更少的整体编码,并将数据源与对象分离,使每个部分更容易模拟/测试

  • 要加快速度,需要为已发现的方法链提供缓存解决方案,因为为每个模型类型匹配数十万个方法会非常耗时,但我认为这并不难做到- 只需在找到它们时将所有找到的链和一些元数据存储在内存中,以便能够从任何时间点恢复搜索 - 当您更新方法时,只需清除缓存,对第一个请求进行性能打击

谢谢你的时间

最佳答案

您所描述的听起来有点迂回Dependency Injection .引用:

"Passing the service to the client, rather than allowing a client to build or find the service, is the fundamental requirement of the pattern."

根据您使用的语言,应该有几个可用的依赖注入(inject)框架/库。

关于algorithm - 尝试确定数据注入(inject)方法是否已有名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779033/

相关文章:

algorithm - 所有大小为 A x B 的二维子数组的最大值

java - 生成给定字符串的所有排列

java - 寻找合适的算法

algorithm - 找出要确保猴子被击中的最少射击次数?

python - 如何将其转换为递归函数?

scala - 如何过滤相邻顶点类型的混合节点图

objective-c - 查找字谜Objective-C的算法

javascript - 试图理解这个 JavaScript 重复删除算法中的 for 循环

c++ - 数据结构中的 MST 和唯一性问题已解决 Ex?

php - 什么是好的免费 PHP 图表套件?