PSD( Private-Self-Development )

프로토타입 패턴 본문

Backend/디자인패턴

프로토타입 패턴

chjysm 2023. 5. 10. 14:35

프로토타입 패턴? 

보통은 객체 생성 시  new 키워드를 통해 자원을 새로 할당하여 생성하게 된다.

이때, 복합 객체 거나 생성 로직이 복잡한 경우, 생성할 때마다 이러한 리소스가 들어가 자원 낭비가 된다.

 

이러한 상황에서, 그때그때 새로 생성하는 것이 아닌 기존 데이터를 복사하여 사용하여

리소스 낭비를 줄이는 것이 프로토타입 패턴이다.

 

프로토타입 패턴의 장점

  • 구현 클래스에 종속되지 않고 객체를 생성(복제)할 수 있다.
  • 반복되는 초기화 코드를 적용하지 않는다.
  • 복합 객체를 쉽게 생성할 수 있다.

 

프로토타입 패턴의 단점

  • 순환 참조가 있는 복합 객체는 복제가 까다로울 수 있다.

 

프로토타입 패턴 구현

@Getter
public class Computer implements Cloneable{
    private String cpu;
    private String ram;
    private String storage;

    @Override
    public Computer clone() {
        try {
            return (Computer) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}

// 사용 예시
public static void main(String[] args) {
    Computer computer = new Computer( "cpu", "ram", "storage" );
    Computer cloneComputer = computer.clone();
}

 

언제 사용해야 할까?

  • 비슷한 객체를 자주 생성해야 할 때
  • 복합 객체를 생성하기 위한 생성 로직이 복잡하고 리소스가 많이 들어갈 때 

 


참조 : 

https://refactoring.guru/ko/design-patterns/prototype

'Backend > 디자인패턴' 카테고리의 다른 글

디자인 패턴  (0) 2023.05.15
어댑터 패턴  (0) 2023.05.15
빌더 패턴  (0) 2023.05.09
추상 팩토리 패턴  (0) 2023.05.09
팩토리 메서드 패턴  (0) 2023.03.21