![]() |
1
86
这种模式称为“流畅的界面”(参见 Wikipedia )
只是
例如
将成为
|
![]() |
2
10
} 无方法链接
方法链接, 也称为命名 参数习语 ,是在面向对象编程语言中调用多个方法调用的常用语法。每个方法都返回一个对象,允许在单个语句中将调用链接在一起。链接是句法上的糖分,它消除了中间变量的需要。方法链也被称为火车残骸,这是因为在同一行中,随着更多方法被链接在一起而出现的方法的数量不断增加,即使方法之间经常添加换行符。 类似的语法是 方法级联 ,其中,在方法调用之后,表达式计算为当前对象,而不是方法的返回值。通过让方法返回当前对象本身,可以使用方法链接来实现级联。级联是Fluent接口中的一项关键技术,由于链接在面向对象的语言中得到了广泛的实现,而级联则不是,这种“通过返回链接进行级联”的形式通常被简单地称为“链接”。链接和级联都来自Smalltalk语言。 |
![]() |
3
4
从你的例子来看:
链中的每个方法都必须返回类或接口。链中的下一个方法必须是返回类的一部分。 我们从吐司开始。方法MakeText(在类Toast中定义为静态方法)必须返回类或接口。在这里,它返回类重力的一个实例。 方法setGravity(在类重力中定义)返回类视图的实例, 方法setview(在类视图中定义)返回类jpanel的实例。 这个链子可以一步一步地写出来。
将链写为链将从源代码中删除所有中间实例变量。 |
![]() |
4
3
在Google上搜索构建器模式或流畅的界面,以获得更多有关这方面的详细信息。 在方法的末尾返回“this”,这在大多数情况下都可以实现。 |
![]() |
5
1
添加返回这个;对于这个类来说肯定有帮助,但是对于子类来说失败了。 如果您希望将链接行为继承到子类,那么也可以更改类签名,如下所示: 类超类<子类扩展超类> 这样,所有子类都将继承方法链接。 例子:
|
![]() |
NoobishPro · Javascript:链接jQuery等元素 7 年前 |
![]() |
Il Kim · 数组上的链接方法显示为未定义[重复] 7 年前 |
![]() |
Brian Ruff · Ruby方法链接(初学者) 7 年前 |
![]() |
Harold · 链接到本机Javascript函数 7 年前 |
![]() |
lazy python · 也许Python中的monad具有方法链接 10 年前 |