정의
객체의 메서드를 연속적으로 호출하여 마치 체인처럼 연결하는 프로그래밍 기법
조건
1.
메서드는 객체를 반환해야 한다.
2.
반환되는 객체는 다음 메서드 호출에 사용될 수 있어야 한다.
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person()
.setName("John Doe")
.setAge(30);
System.out.println(person);
}
}
Java
복사
장점
•
코드 간결화 : 여러 메서드를 한 줄에 작성하여 코드를 간결하게 만들 수 있다.
Person person = new Person();
person.setName("John Doe").setAge(30).setGender("Male");
Java
복사
•
가독성 향상 : 메서드 호출 순서를 명확하게 보여주어 코드의 가독성을 향상시킬 수 있다.
Person person = new Person()
.setName("John Doe")
.setAge(30)
.setGender("Male");
Java
복사
•
유연성 향상 : 메서드 호출 순서를 자유롭게 변경하여 유연성을 향상시킬 수 있다.
Person person = new Person();
person.setAge(30).setName("John Doe").setGender("Male");
Java
복사
•
Fluent 인터페이스와 함께 사용 : Fluent 인터페이스와 함꼐 사용하면 더욱 자연스럽고 간결한 코드를 작성할 수 있다.
Person person = Person.create()
.withName("John Doe")
.withAge(30)
.withGender("Male")
.build();
Java
복사
단점
•
코드 이해 어려움 : 메서드 체이닝 방식을 과도하게 사용하면 코드를 이해하기 어려워질 수 있다.
•
오버헤드 발생 : 메서드 호출마다 객체 생성이 발생하여 오버헤드가 발생할 수 있다.
예시
•
Builder 패턴 : 객체 생성 과정을 단계별로 수행하는 패턴
•
•
UI 프레임워크 : 위젯 설정을 위한 메서드 체이닝 방식을 제공하는 프레임워크