Lời gọi theo chuỗi Method chaining, cũng được gọi là Named Parameter, là một kỹ thuật về cú pháp chung cho cách gọi nhiều lần tới các hàm khác trong các ngôn ngữ lập trình hướng đối tượng. Mỗi phương thức trả về một đối tượng object là chính nó, cho phép các lời gọi được xâu chuỗi lại với nhau trong các lệnh không yêu cầu biến lưu trữ cho kết quả trung gian.

Trái ngược là lời gọi xếp tầng Method Cascading, là cú pháp cho phép gọi các phương thức trên cùng một đối tượng.

Một ví dụ trong java về cách gọi theo chuỗi được sử dụng như sau:

class Person {
	private String name;
	private int age;
 
	// In addition to having the side-effect of setting the attributes in question,
	// the setters return "this" (the current Person object) to allow for further chained method calls.
 
	public Person setName(String name) {
		this.name = name;
		return this;
	}
 
	public Person setAge(int age) {
		this.age = age;
		return this;
	}
 
	public void introduce() {
		System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
	}
 
	// Usage:
	public static void main(String[] args) {
		Person person = new Person();
		// Output: Hello, my name is Peter and I am 21 years old.
		person.setName("Peter").setAge(21).introduce();
	}
}

Ngược lại, là cú pháp tương đương gọi xếp tầng. Hai chương trình cho kết quả giống nhau 😀

class Person {
	private String name;
	private int age;
 
	// Per normal Java style, the setters return void.
 
	public void setName(String name) {
		this.name = name;
	}
 
	public void setAge(int age) {
		this.age = age;
	}
 
	public void introduce() {
		System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
	}
 
	// Usage:
	public static void main(String[] args) {
		Person person = new Person();
		// Not using chaining; longer than the chained version above.
		// Output: Hello, my name is Peter and I am 21 years old.
		person.setName("Peter");
		person.setAge(21);
		person.introduce();
	}
}

Tham khảo

https://en.wikipedia.org/wiki/Method_chaining
https://en.wikipedia.org/wiki/Method_cascading

About The Author