Search

메소드 체이닝(Method Chaining)

태그

정의

객체의 메서드를 연속적으로 호출하여 마치 체인처럼 연결하는 프로그래밍 기법

조건

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 패턴 : 객체 생성 과정을 단계별로 수행하는 패턴
스트림 API : 데이터 처리를 위한 다양한 메서드를 제공하는 API
UI 프레임워크 : 위젯 설정을 위한 메서드 체이닝 방식을 제공하는 프레임워크