Etc

Design Pattern - Prototype

SuperDT 2024. 4. 28. 23:41

Prototype Pattern은

새로운 객체를 생성할 때

기존 객체를 복제하여 객체를 생성하는 방법입니다

 

객체의 생성이 복잡한 경우에

해당 패턴을 이용하여 객체 생성에 드는 비용이나 과정을 줄일 수 있습니다

 

해당 패턴을 사용하기 위해서는

먼저 아래와 같이 인터페이스를 생성합니다

public interface Prototype {
    Prototype clone();
    void setName(String name);
    String getName();
}

 

그 다음에 인터페이스를 이용하여 클래스를 구현합니다

public class User implements Prototype {
    private String name;

    @Override
    public Prototype clone() {
        User clone = new User();
        clone.setName(this.name);
        return clone;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }
}

 

기존 유저의 정보를 유지한 상태로 복제하여

필요한 부분만 수정하여 새로운 객체를 생성할 수 있습니다

public class Client {
    public static void main(String[] args) {
        User user = new User();
        user.setName("User1");

        //기존 유저를 복제하여 새로운 객체 생성, 필요한 부분만 변경하여 사용
        User clone = (User) user.clone();
        clone.setName("User2");

        System.out.println("Original object name: " + User.getName());
        System.out.println("Cloned object name: " + clone.getName());
    }
}