1.什麼是鏈式呼叫?
person person = new person().setname(fog)
.setage(18)
.set***(man)
.setjob(software engineer);
2.優勢和好處
有以上的**,好處顯而易見:**量大幅度減少,邏輯集中清晰明了,且易於檢視和修改。
3.背後的實現原理
一般而言,我們在設定set,get的方法的時候,在對應的方法裡都是返回的void。
從某種意義上來說,**的返回值是乙個必須要執行的步驟,直接返回void是一種浪費,而我們實現鏈式呼叫的關鍵步驟和原理就是這個返回值的不同。
public class person {
private string name;
private string ***;
private string job;
private int age;
public person setjob(string job) {
this.job = job;
return this;
public person setname(string name) {
this.name = name;
return this;
public person set***(string ***) {
this.*** = ***;
return this;
public person setage(int age) {
this.age = age;
return this;
解析:開始的那一串鏈式設定屬性的實現**,正是上面的形式。
對比而言,就是返回值的不同,乙個是void,乙個是this。
而實現連釋電用的邏輯就是:
1.對於第乙個設定屬性的方法而言,新建乙個物件的時候,正常的呼叫其方法,如果這個方法返回的是this,意味著將這個設定過屬性的物件返回
2.那麼對於第二個方法而言,是乙個設定方法返回的是已經設定過屬性的物件,而這個返回的物件也是有對應的屬性設定方法的,這樣一來,就相當於對乙個建立的物件呼叫其屬性設定方法,並且將這個物件返回
amp 呼叫鏈 談談iOS獲取呼叫鏈
本文由雲 社群發表 ios開發過程中難免會遇到卡頓等效能問題或者死鎖之類的問題,此時如果有呼叫堆疊將對解決問題很有幫助。那麼在應用中如何來實時獲取函式的呼叫堆疊呢?本文參考了網上的一些博文,講述了使用mach thread的方式來獲取呼叫棧的步驟,其中會同步講述到棧幀的基本概念,並且通過對乙個dem...
js實現方法的鏈式呼叫
假如這裡有三個方法 person.unmerried person.process person.married 在jquery中通常的寫法是 person.unmerried process married 而在js中要實現鏈式呼叫,只需在類中的每個方法中通過this關鍵字返回物件例項的引用。fu...
鏈式呼叫方法的實現原理和方法
1.什麼是鏈式呼叫?person person newperson setname fog setage 18 set man setjob software engineer 2.優勢和好處 有以上的 好處顯而易見 量大幅度減少,邏輯集中清晰明了,且易於檢視和修改。3.背後的實現原理 一般而言,我...