본문 바로가기

아키텍처

[디자인 패턴] 프로토타입 패턴

728x90

/* 프로토타입 패턴 (Prototype Pattern) */

객체가 있고 그 객체의 정확한 복사본이 필요한다면 우리는 새 객체를 생성하고 기존 객체의 모든 필드 값을 새 객체에 넣을 것이다. 이러면 문제가 없지만 기존 객체의 필드를 외부에서 볼 수 없는 경우가 발생한다. 

또한, 객체의 복제본을 생성하려면 객체의 클래스를 알아야 하므로, 해당 클래스에 의존하게 된다.

이러한 문제점들을 막기 위해 프로토타입 패턴을 이용한다.

 

프로토타입 패턴은 clone 메서드를 사용한다.

/* 프로토타입 객체 생성 */

방법은 여러가지가 될 수 있다. 나는 프로토타입 인터페이스 정의를 통해 구현을 하겠다

 

// 프로토타입 인터페이스
interface Prototype {
    Prototype clone();
}

// 구체적 프로토타입 클래스
class ConcretePrototype implements Prototype {
    private String field;
    
    public ConcretePrototype(String field){
        this.field = field;
    }
    
    @Override
    public Prototype clone(){
        return new ConcretePrototype(this.field);
    }
}

// 클라이언트 코드
public class Client{
    public static void main(String[] args){
        // 기존 객체
        Prototype original = new ConcretePrototype("original");
        
        // 복제 객체
        Prototype clone = original.clone();       
    }
}

 

728x90

'아키텍처' 카테고리의 다른 글

[디자인 패턴] 싱글톤 패턴 (Singleton Pattern)  (2) 2024.03.28
[아키텍처] SOLID 원칙  (0) 2024.02.09