dsl java 语言_5种语言下的DSL实现

我们(此处指的是Braintree)为用户提供5种语言的客户端库:Ruby,Python,PHP,C#和Java。每一个库都是帮助我们的客户构建请求,分析响应以及从网关中获取数据,我们希望他们可以简单和直觉化的集成Braintree。

维护5种客户端库意味着编写在5种语言中编写本质上一样的功能。许多情况下也就是语法不同而已,但是,一些特征足够复杂保证每个库有些轻微不同。

一个例子是交易查询,由于查询有些复杂,我们决定为每个库创建领域特定语言(DSL)

问题

我们希望交易查询可以很简单的读以及运行足够复杂的查询,特别希望能够同时查询3中不同类型域:

文本域:查询精确匹配,没有匹配,以及起始字符串,结尾字符串和子串

多个值域:用指定值查询并反悔所有匹配记录

范围域:用低边界和高边界查询(包含所有)

一个所有匹配条件的资源将返回

查询条件例子

下面的代码例子假定用户想要用下面的条件查询交易:

order id 以 "a2d"开始

客户站点以".com"结尾

账单第一个名字为"John"

状态可能为Authorized或Settled

金额在10到20美元之间

Ruby

策略

在ruby,search方法在block中生成一个搜索对象,该对象包含了必要的方法构建查询条件。block将执行时request被构建,然后返回结构。Ruby重载了查询域中的文本与范围==,!=,>=和<=操作方法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值