编程语言的链式操作实现原理

链式操作

链式操作顾名思义就是所有的操作是一个链,所有的操作是通过链条串接起来的。 我们经常在各个语言中都能看到链式操作的身影。

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);

上面就是一个链式操作,我们只要每次调用对象的方法的时候,最后都返回对象,就可以继续调用对象的方法,这就是链式操作的核心原理。