什么是流利的二传手

图片

今天,在PhpStorm中,我创建了一个私有变量,并注意到IDE为我提供了两种设置器:常规设置器和流畅设置器。

我以前从未见过“流畅的二传手”一词,因此我创建了这两个选项。

/* PHP */ class Foo { private $var; //  setter public function setVar($var) { $this->var = $var; } //  fluent setter public function setVar($var) { $this->var = $var; return $this; } } 

是的,所以流利的设置者就是返回对象本身的设置者

真是愚蠢的事。 谁可能需要视图设计

 $object = $object->setVar(1); //     ,    $object->setVar(1); //      ,   $sameObject = $object->setVar(1); 

乍看之下。

过了一会儿我猜到了。 这就是所谓的jQuery链接。 由于返回了对象,我们可以立即应用下一个setter。

 /* Javascript */ $('#elementId').val(13).css('font-size', '20px').appendTo(element2); //     : $('#elementId') .val(13) .css('font-size', '20px') .appendTo(element2); 

流利的设置器旨在使代码更清晰,更清晰。

是的,在Java语言中,这很明显。 在Java和PHP中也是如此。 而且,已经有活跃使用的setter函数,所以为什么不使用流畅的版本。

 /* php */ $car->setColor('#f00')->setWeight('1200')->setPower(55000); $car ->setColor('#f00') ->setWeight('1200') ->setPower(55000); 

当然,在Python中,您可以编写setter函数,但是好处并不明显。 对于我个人来说,使用通常的Python setter会更方便,它看起来不像一个函数,而是一个赋值运算符。 在我看来,以Python形式使用set_var()的setter与Python的简单性思想相矛盾。

 # python #  @property car.color = '#f00' car.weight = 1200 car.power = 55000 # fluent-,    .   ?   . car.color('#f00').weight('1200').power(55000) #      ... car.set_color('#f00').set_weight('1200').set_power(55000) #    ,    ,     . car.set_color('#f00') \ .set_weight('1200') \ .set_power(55000) 

后来,我找到了一篇有关Fluent接口的文章 ,在那里我遇到了一个更加醒目的python示例

自我教育的时刻结束了。

Source: https://habr.com/ru/post/zh-CN429020/


All Articles