반응형
프로토타입 : 기존 객체를 복사하여 새로운 객체를 생성하는 디자인 패턴
객체 생성을 위한 복잡한 과정을 간소화하고, 기존 객체와 유사한 객체를 생성하는 시간과 비용을 줄일 수 있다.
예제
public class Employee implements Cloneable
{
private Long id;
private String name;
public Employees(Long id, String name)
{
this.id = id;
this.name = name;
}
@Override
public Object clone() throws CloneNotSupportedException {
return new Employee(this.id, thid.name);
}
}
자바는 clone 메서드 구현을 강제하는 Cloneable 인터페이스를 지원한다.
클래스가 해당 인터페이스를 구현하도록 해서 클라이언트가 쉽게 객체를 복사할 수 있도록 한다.
public static void main(String[] args) throws CloneNotSupportedException
{
Employee emp = new Employee(1, "윤재훈");
Employee emp1 = (Employee) emps.clone();
Employee emp2 = (Employee) emps.clone();
}
클라이언트는 위와 같이 쉽게 기존 객체를 복사할 수 있다.
clone 메서드를 제공하지 않았다면, 객체를 일일히 생성해야 해서 더 많은 시간과 비용을 들었을 것이다.
또한, 기존 객체가 데이터베이스에 접근해야만 얻을 수 있는 큰 데이터를 가지고 있다고 가정해보자.
clone 메서드가 없었다면, 새로운 객체를 생성할 때마다 데이터베이스에서 해당 데이터를 가져와야 했을 것이다.
그러나, 프로토타입 패턴 덕분에 데이터베이스에 한 번만 접근해도 여러 객체를 생성할 수 있다.
장점
- 객체를 독립적으로 복제할 수 있다.
- 반복되는 초기화 코드 대신, 프로토타입들을 복제하는 방법을 사용할 수 있다.
- 복잡한 객체를 더 쉽게 생성할 수 있다.
- 객체를 만드는 과정을 숨길 수 있다.
단점
- 순환참조 등의 복잡한 구조를 띠는 객체를 복제하는 clone 메서드 구현이 어려울 수 있다.
(참고)
https://refactoring.guru/ko/design-patterns/prototype
반응형
'개발' 카테고리의 다른 글
[ 디자인 패턴: 구조 ] (2) 복합체/합성 (Composite) (0) | 2025.04.04 |
---|---|
[ 디자인 패턴: 구조 ] (1) 어댑터 (Adapter, Wrapper) (0) | 2025.04.03 |
[ 디자인 패턴: 생성 ] (4) 빌더 (Builder) (0) | 2025.04.01 |
[ 디자인 패턴: 생성 ] (3) 싱글톤 (Singleton) (0) | 2025.03.31 |
[ 디자인 패턴: 생성 ] (2) 추상 팩토리 (Abstract Factory) (0) | 2025.03.30 |