为什么Stripe在javaapi中使用Map
在Stripe java api中使用HashMap的原因是什么
从条纹开始。com:
Stripe.apiKey = "sk_test_BQokikJOvBiI2HlWgH4olfQ2";
Map<String, Object> ownerParams = new HashMap<String, Object>();
ownerParams.put("email", "payinguser+fill_now@example.com");
Map<String, Object> sourceParams = new HashMap<String, Object>();
sourceParams.put("type", "bitcoin");
sourceParams.put("amount", 1000);
sourceParams.put("currency", "usd");
sourceParams.put("owner", ownerParams);
Source source = Source.create(sourceParams);
Map<String, Object> chargeParams = new HashMap<String, Object>();
chargeParams.put("source", source.getId());
chargeParams.put("amount", source.getAmount());
chargeParams.put("currency", source.getCurrency());
Charge charge = Charge.create(chargeParams);
为什么不将简单java对象与getter和setter一起使用呢? (我知道我可以用Java自己实现,因为它只是http请求)
# 1 楼答案
我不知道确切的细节,但原因似乎很简单。他们希望避免设置&;取而代之的是获取他们使用的每个属性,映射以获得相应设置的键和值。他们很可能正在处理JSON。即使是XML,使用映射也比通过普通对象处理要容易得多,因为每次都需要手动设置和获取所需的每个属性。相反,许多属性可以是可选的,所以只需设置通过map传递的值,因为在map上迭代比对象更容易
# 2 楼答案
这是我一次又一次看到的模式。我们可以:
关于这个话题有很多线索1,2,3
然而,从Stripe中显示的并不是确切的,它们只是在将请求属性转换为POJO之前,使用
Map
作为填充请求属性的中介因此,这更像是用作POJO构建器模式的地图。那么,备选方案将是:
这是我更喜欢的,也是AWS(例如)的大多数工作方式
但我认为,从JSON序列化程序的角度来看,转换一个映射,然后向POJO中添加一堆语法错误和框架y内容更为简单。所以,基本上只是一个实施决定
此外,如果与少量请求对象相比,您的API具有大量的请求属性,那么我认为它们开始更像字段字典,而不是结构化数据
以免我们忘记,在经历了所有花哨的Java废话之后,这将是一个JSON中的字符串字典。真的,尤罗