在XQuery中实现策略模式,反射函数一般

时间:2017-06-09 16:00:41

标签: xquery marklogic strategy-pattern

我想知道是否有办法内省XQuery模块并动态访问函数。这将有助于我实现GOF策略模式,因为XQuery不支持同一接口的多个实现。

问题当然是除了检查变量类型之外,似乎不支持XQuery中的内省。

关于如何在XQuery中实现此模式的任何想法? (我使用MarkLogic 9)

非常感谢, ķ。

PS。不幸的是,我发现的大多数XQuery资源都集中在这个或那个功能的小细节上,但我找不到一个这样的资源,它本身就把XQuery作为一种严肃的编程语言,并解决了这样的软件设计问题

1 个答案:

答案 0 :(得分:1)

XQuery 3.0+和MarkLogic 9支持一流的功能。在许多情况下,您可以使用一流函数和依赖注入将常见的OO设计模式重新编写为函数式编程等效项。

此外,您可以通过xdmp:functions()访问范围内的功能。

有一种方法可以在ML中获得类似反射的功能,但它有点像黑客。看看这个库,它抛出一个异常,捕获它,并使用异常有效负载来检查堆栈:

https://github.com/marklogic/cq/blob/master/lib-debug.xqy

对于更多XQuery编程模式和技术,您可能希望查看来自各种面向XML的会议(如BalisageXML PragueXML London)的会议记录。此外,搜索GitHub repos以获取XQuery项目和阅读代码可能会有所帮助。