반년 전 들었던 Spring 심화반 강의를 리뷰하며 정리한 내용입니다
싱글턴은 다른 생성 패턴과 달리 하나의 객체만 생성을 제한하는 패턴입니다. 그리고 생성된 객체는 공유되어 어디서든 접근할 수 있습니다.
쉽게 배워 바로 써먹는 디자인 패턴
아래 ProductService 코드의 문제점을 생각해보아요
public class ProductService {
public Product createProduct(ProductRequestDto requestDto) throws SQLException {
Product product = new Product(requestDto);
ProductTempRepository productRepository = new ProductTempRepository();
productRepository.createProduct(product);
return product;
}
}
ProductTempRepository productRepository = new ProductTempRepository();
ProductTempRepository = 클래스 = 가위틀
productRepository = 객체 = 가위
객체 생성은 가위틀에서 가위를 만들라는 것!
현재 코드는 가위가 필요할때마다 가위를 만들어서 사용하고 있음
아래와 같이 수정하자
public class ProductService {
private final ProductTempRepository productRepository;
public ProductService() {
this.productRepository = new ProductTempRepository();
}
public Product createProduct(ProductRequestDto requestDto) throws SQLException {
Product product = new Product(requestDto);
productRepository.createProduct(product);
return product;
}
}