java builder 模式_java-流畅的界面和Builder模式之间有什么区别?

流利的接口是语义外观。 您可以将它们放在现有代码之上,以减少语法干扰,并更清楚地表达该代码在一种普遍存在的语言中的作用。 这是构建内部领域特定语言时使用的模式。 这与可读性有关。

导演/建造者精心策划某物的建造。 就是说,如果您要构建比萨饼烘焙机,则主管将确保由正确的构建者以正确的顺序使用正确的数据执行从订单到比萨饼的步骤。 这与验证和委派有关。

您当然可以在Director / Builder模式的顶部放置一个Fluent界面,以使它更流畅地阅读并强调领域概念(相对于构建和委派的技术过程)。 那可能是一个Expression Builder。

我想强调的是Fluent接口不仅仅是方法链。 这是一个普遍的误解。 方法链接是一种实现Fluent接口的方法,但它并不相同,因为它缺乏语义特性,例如 这不是Fluent界面:

SomeObject.setFoo(1).setBar(2).setBaz(3);

上面没有表达任何关于SomeObject的信息。 它不是某些语义模型之上的外观。 这只是一些链接的方法。 Fluent接口的一个示例是SQL查询构建器,例如

SQLBuilder.select('foo').from('bar').where('foo = ?', 42).prepare();

该API的底层是用于创建SQL语句的代码。 它可能包含多个对象,显示的调用很可能会创建一个Select对象,在其上调用一个setter,创建一个Condition对象,并将其应用于Select对象,最后返回一个Statement对象。 但是所有这些对我们来说都是隐藏的。 这也突出显示了Fluent接口的另一方面:它们可能违反SOLID和Demeter法则。 但是由于它是希望遵循这些设计原则的代码之上的外观,所以没什么大不了的,因为您将违规行为本地化为Fluent Interface。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值