包装外部库返回类型的策略

jdie8274j

我被要求对一些旧代码进行单元测试

当前,该代码在方法调用和所用类型方面都第三方库紧密耦合

我计划Façade设计模式的形式在库周围编写包装程序,这将有助于可测试性,为其余代码创建更简洁的接口,并允许我将来在需要时换出库。

由于库函数是自包含的,因此在方法调用为void返回类型的情况下,此方法可以很好地工作但是,如果现有代码使用特定于库的类型怎么办?一个例子在这里:

LibrarySpecificType[] myVar = wrappedLibrary.DoX();

尽管我在上面的示例中包装了库调用,但是它仍然返回特定于库的类型,因此仍然有些耦合。

有谁知道解决这个问题的方法吗?

山姆·霍尔德

您可以围绕返回的类型创建包装器类,并wrappedLibrary返回这些包装的类型。如果这些类型中的每一个还公开了接受并返回其他类型的方法,则可能需要进行大量工作。像这样的东西:

WrappedLibrarySpecificType[] myVar = wrappedLibrary.DoX();

然后,在库包装器中,必须调用实际的库并包装库返回的类型,并返回包装的类型。

但是最终这是一个兔子洞,您可能需要包装每种类型。

如果这是一个大型库,则可能会在编写(或使用)工具时有所收益,该工具将能够通过反映第三方库中的类型来为您生成包装器

您可能需要一些帮助来创建委派成员,具体取决于您的想法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

包装外部库返回类型的策略

来自分类Dev

如何包装使用RequireJS加载的外部库?

来自分类Dev

用布尔类型包装返回值

来自分类Dev

包装器类对象作为返回类型

来自分类Dev

Java,策略模式,泛型和返回类型

来自分类Dev

Java,策略模式,泛型和返回类型

来自分类Dev

C ++ 11函数包装器类型取决于包装返回类型

来自分类Dev

从委托返回元组(未包装可选类型的值)

来自分类Dev

Rust Rocket如何推断结果/选项中包装的返回类型?

来自分类Dev

使用AsRef返回输入包装类型中包含的引用

来自分类Dev

从委托返回元组(未包装可选类型的值)

来自分类Dev

可以返回任何类型的 Java 包装泛型类

来自分类Dev

用Python包装了C库,但返回的数组未更改

来自分类Dev

用Python包装了C库,但返回的数组未更改

来自分类Dev

(CSP)内容安全策略。处理从外部库添加的内联样式的方法

来自分类Dev

外部包装来自get

来自分类Dev

外部数据包装程序fdw_postgres可以处理PostGIS的GEOMETRY数据类型吗?

来自分类Dev

Polymer 2.x:在 ES6 Web 组件中包装外部 JS 库

来自分类Dev

创建C#属性类/为不同类型返回特定属性的策略是什么?

来自分类Dev

传递和返回值的策略(任何类型,包括数组或更复杂的数据结构)?

来自分类Dev

创建C#属性类/为不同类型返回特定属性的策略是什么?

来自分类Dev

从外部存储库安装后返回ubuntu软件包?

来自分类Dev

在Java中,如果返回类型分别是基元及其包装类,则可以重写方法吗?

来自分类Dev

如何在TypeScript中包装带有承诺的返回类型?

来自分类Dev

如何在vscode中使用jsdoc在包装函数中正确获取返回值的推断类型?

来自分类Dev

语义的c ++包装类型

来自分类Dev

包装类型的“继承”实例

来自分类Dev

类型成员的包装

来自分类Dev

茱莉亚包装类型的比较

Related 相关文章

  1. 1

    包装外部库返回类型的策略

  2. 2

    如何包装使用RequireJS加载的外部库?

  3. 3

    用布尔类型包装返回值

  4. 4

    包装器类对象作为返回类型

  5. 5

    Java,策略模式,泛型和返回类型

  6. 6

    Java,策略模式,泛型和返回类型

  7. 7

    C ++ 11函数包装器类型取决于包装返回类型

  8. 8

    从委托返回元组(未包装可选类型的值)

  9. 9

    Rust Rocket如何推断结果/选项中包装的返回类型?

  10. 10

    使用AsRef返回输入包装类型中包含的引用

  11. 11

    从委托返回元组(未包装可选类型的值)

  12. 12

    可以返回任何类型的 Java 包装泛型类

  13. 13

    用Python包装了C库,但返回的数组未更改

  14. 14

    用Python包装了C库,但返回的数组未更改

  15. 15

    (CSP)内容安全策略。处理从外部库添加的内联样式的方法

  16. 16

    外部包装来自get

  17. 17

    外部数据包装程序fdw_postgres可以处理PostGIS的GEOMETRY数据类型吗?

  18. 18

    Polymer 2.x:在 ES6 Web 组件中包装外部 JS 库

  19. 19

    创建C#属性类/为不同类型返回特定属性的策略是什么?

  20. 20

    传递和返回值的策略(任何类型,包括数组或更复杂的数据结构)?

  21. 21

    创建C#属性类/为不同类型返回特定属性的策略是什么?

  22. 22

    从外部存储库安装后返回ubuntu软件包?

  23. 23

    在Java中,如果返回类型分别是基元及其包装类,则可以重写方法吗?

  24. 24

    如何在TypeScript中包装带有承诺的返回类型?

  25. 25

    如何在vscode中使用jsdoc在包装函数中正确获取返回值的推断类型?

  26. 26

    语义的c ++包装类型

  27. 27

    包装类型的“继承”实例

  28. 28

    类型成员的包装

  29. 29

    茱莉亚包装类型的比较

热门标签

归档