加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.cn/)- 运营、云管理、经验、智能边缘、云硬盘!
当前位置: 首页 > 业界 > 正文

老玩家打新副本,无人掉队

发布时间:2021-01-30 17:42:00 所属栏目:业界 来源:互联网
导读:完美。 但是,它不能完成Person - String类型的转换。一般来说,我们有两种途径来达到此目的: 1.直接方式:写一个Person转String的转换器,专用 a.缺点明显:多写一套代码 2.组合方式(推荐):如果目前已经有Person - Integer的了,那我们就组合起来用就非常

完美。

但是,它不能完成Person -> String类型的转换。一般来说,我们有两种途径来达到此目的:

1.直接方式:写一个Person转String的转换器,专用

 a.缺点明显:多写一套代码

2.组合方式(推荐):如果目前已经有Person -> Integer的了,那我们就组合起来用就非常方便啦,下面这个例子将告诉你使用这种方式完成“需求”

 a.缺点不明显:转换器一般要求与业务数据无关,因此通用性强,应最大可能的复用

下面示例二将帮你解决通过复用已有能力方式达到Person -> String的目的。

示例二:使用Printer,有中间转换

基于示例一,若要实现Person -> String的话,只需再给写一个Person -> Integer的转换器放进ConversionService里即可。

❝说明:一般来说ConversionService已经具备很多“能力”了的,拿来就用即可。本例为了帮你说明底层原理,所以用的是一个“干净的”ConversionService实例❞
 

转换步骤分为两步:

1.若源类型(实际类型)不是该Printer类型的泛型类型的子类型的话,那就尝试使用conversionService转一趟

  a.例如:Printer处理的是Number类型,但是你传入的是Person类型,这个时候conversionService就会发挥作用了

2.交由目标格式化器Printer执行实际的转换逻辑
 

格式化器的注册管理远没有转换器那么复杂,因为它是基于上层适配的思想,最终适配为Converter来完成注册的。所以最终注册进去的实际是个经由格式化器适配来的转换器,完美复用了那套复杂的转换器管理逻辑。

❝这种设计思路,完全可以“CV”到我们自己的编程思维里吧❞

甭管是Printer还是Parser,都会被适配为GenericConverter从而被添加到ConverterRegistry里面去,被当作转换器管理起来。现在你应该知道为何FormatterRegistry接口仅需提供添加方法而无需提供删除方法了吧。

当然喽,关于Printer/Parser的适配实现亦是本文本文关注的焦点,里面大有文章可为,let's go!

PrinterConverter:Printer接口适配器

把Printer适配为转换器,转换目标为fieldType -> String。

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读