amp 呼叫鏈 鏈式呼叫方法的實現原理和方法

2021-10-13 05:44:35 字數 1096 閱讀 9450

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.背後的實現原理 一般而言,我...