链式操作
链式操作顾名思义就是所有的操作是一个链,所有的操作是通过链条串接起来的。
我们经常在各个语言中都能看到链式操作的身影。
js-jquery中
$(this).addClass("dark").removeClass("black").css("display","block");
php-数据库操作
$model->field('name')->where(array('id'=>3))->get();
java中构造器模式
Request request = new Request.Builder()
.url("https://api.github.com/markdown/raw")
.post(RequestBody.create(mediaType, requestBody))
.build();
实现原理
链式操作的实现原理就是每次进行操作的时候,都将对象返回。笔者以php语言为例,进行简单的示范。
class Demo
{
private $result = 0;
public function __construct($result)
{
$this->result = $result;
}
public function add($a){
$this->result = $this->result + $a;
return $this;
}
public function sub($a){
$this->result = $this->result - $a;
return $this;
}
public function mul($a){
$this->result = $this->result * $a;
return $this;
}
public function div($a){
$this->result = intval($this->result / $a);
return $this;
}
public function get(){
return $this->result;
}
}
$demo = new Demo(4);
$result = $demo->add(3)->mul(10)->div(5)->sub(4)->get();
var_dump($result);
上面就是一个链式操作,我们只要每次调用对象的方法的时候,最后都返回对象,就可以继续调用对象的方法,这就是链式操作的核心原理。