Search
Duplicate

정적 팩토리 메소드 패턴

작성일시
2023/04/22 09:41
강의 번호
4단계-자동차경주
유형
강의
자료
복습
정적 메소드 패턴이란?
객체 생성의 역할을 하는 클래스 메서드라는 의미로 요약할 수 있다.
아래 트랙에서 Cars의 객체를 생성할 때 아래와 같이 Cars를 for문을 돌면서 추가하고 있다.
아래와 같이(정적메소드 패턴을 사용하지 않을 시) 작성 하게 될때 한눈에 보기도 불편하다고 생각 될 것이다. 적정 메소드 패턴을 사용하게 되면, 생성할때 진행해야될 로직들이 내부로 숨은 것을 볼 수 있고, from을 통해서 cars가 만들어진다는 것을 의미적으로도 볼 수 있다.
public class Track { private static final String DELIMITER = ",|:"; private int attemptCount; private Cars cars; public Track(final String carNames, final int attemptCount) { this.attemptCount = attemptCount; createCars(carNames); } private void createCars(final String carNames) { List<Car> cars = new ArrayList<>(); for (String carName : carNames.split(DELIMITER)) { cars.add(new Car(carName)); } this.cars = new Cars(cars); }
Java
복사
다음과 같이 변경
public class Track { private int attemptCount; private Cars cars; public Track(final String carNames, final int attemptCount) { this.attemptCount = attemptCount; createCars(carNames); } private void createCars(final String carNames) { this.cars = Cars.from(carNames); }
Java
복사
public class Cars { private static final String DELIMITER = ",|:"; private List<Car> cars; public Cars(List<Car> cars) { this.cars = cars; } public static Cars from(final String carNames) { List<Car> cars = new ArrayList<>(); for (String carName : carNames.split(DELIMITER)) { cars.add(new Car(carName)); } return new Cars(cars); }ㅇㅇ
Java
복사
이외에 장점들이 더 있지만, 직접 사용해보고, 장점을 느꼈을 때 추가로 적도록 하겠다.
정적 팩토리 메서드 네이밍 컨벤션
from : 하나의 매개 변수를 받아서 객체를 생성
of : 여러개의 매개 변수를 받아서 객체를 생성
getInstance | instance : 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음.
newInstance | create : 새로운 인스턴스를 생성
get[OtherType] : 다른 타입의 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음.
new[OtherType] : 다른 타입의 새로운 인스턴스를 생성.