메소드 체이닝이란?
-제목 그대로 메소드를 고리마냥 줄줄이 엵어서 메소드를 계속 사용할 수 있게끔 하는 방법입니다
코드를 예로 들어볼게요
const vip = new vipConnectr();
vip.setmvp
vip.setvip
vip.setvvip
vip.Connectr();
이 코드를 예로 들자면 여기서 메소드 체이닝을 입힌다면 ?
const vip= NewConnector().setmvp().setvip().setvvip();
이런 식으로 하나의 연결고리처럼 간결하고 깔끔하게 적을 수 있습니다
그러나 이렇게 작성된 코드는 하나의 라인에서 여러가지 일이 발생할수도 있다라는점 즉 디버깅을 하기가 어렵다는 단점이 존재하므로 주의가 필요합니다
추가적으로 끝내기가 아쉬우니
현재까지 알려진 빌더 패턴은 2가지 입니다
-생성시 지정해야 할 인자가 많을때 사용하는 패턴
-객체 생성 시 여러 단계를 순차적으로 거칠 때 , 이 단계의 순서를 결정해 두고 각 단계를 다양하게 구현할수 있도록 하는 패턴
여기서 소개를 하자면
빌더 패턴이란 ?
빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴입니다. 빌더 패턴은 생성해야 되는 객체가 Optional한 속성을 많이 가질 때 빛을 발휘합니다
또한
"생성과 관련된 디자인 패턴으로 , 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법
여기서 생성 패턴에서는 두가지의 중요한 이슈가 있습니다
1. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화 합니다
2.생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려줍니다.
쉬운말로 정리를 해드리자면 , 생성 패턴을 이용하면 무엇이 생성이되고 , 누가 이것을 생성하며 , 이것이 어떻게 생성되는지 , 언제 생성할 것인지 결정하는 데 유연성을 확보 할 수 있게 됩니다
예시나 정리된걸 넣어보자면
생성자 패턴과 자바 빈 패턴의 장점을 결합하여 객체 생성과 관련된 문제를 해결했다.
기본적인 Class Diagram은 다음과 같다.
빌더 패턴의 장점은 :
-필요한 데이터만 설정할 수 있다
-유연성을 확보할 수 있음
-가독성을 높일 수 있음
-불변성을 확보할 수 있다
여기서 빌더 패턴을 추가적으로 더 설명을 하자면
다수의 설정값이 있을 때의 해당 설정을 옵셔널하게 설정한다면
클라이언트촉에서 필요한 설정에 대해서만 체이팅 형태로 설정할 수 있는 장점이 존재하는데요
또한 대표적으로 쓰일 수 있는 부분은 ORM / dptj
ORM에서 쿼리 빌더같이 쿼리를 사용자가 만들어야 할 때 쿼리가 만들어지는건 사용자로 부터 결정되어야 하므로
빌더 패턴을 이용합니다
여기서 빌더 패턴을 추가적으로 더 설명을 하자면
다수의 설정값이 있을 때의 해당 설정을 옵셔널하게 설정한다면
클라이언트촉에서 필요한 설정에 대해서만 체이팅 형태로 설정할 수 있는 장점이 존재하는데요
또한 대표적으로 쓰일 수 있는 부분은 ORM / dptj
ORM에서 쿼리 빌더같이 쿼리를 사용자가 만들어야 할 때 쿼리가 만들어지는건 사용자로 부터 결정되어야 하므로
빌더 패턴을 이용합니다
-알려주신분 : 멍개님