Skip to content

Latest commit

 

History

History
57 lines (41 loc) · 1.97 KB

File metadata and controls

57 lines (41 loc) · 1.97 KB

기존 인스턴스를 프로토타입으로 사용해 새 인스턴스를 만드는 패턴이다. 비슷한 객체를 여러개 만드는 경우 인스턴스를 생성하는 복잡한 과정을 거칠 필요 없이 새 인스턴스를 만들 수 있다는 장점이 있다.


예시 코드

java의 Cloneable 인터페이스와 Object의 clone() 메서드를 사용하면 프로토타입 패턴을 간단하게 사용할 수 있다.

@Getter
@AllArgsConstructor
public class Pizza implements Cloneable{

    String name;
    String topping;
    String sauce;

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

Cloneable을 상속받고, clone 메서드를 구현해줬다.

    public static void main(String[] args) {

        Pizza pizza1 = new Pizza("Cheese Pizza", "Cheese Topping", "Tomato sauce");

        Pizza pizza2 = pizza1.clone();

        System.out.println("Pizza1");
        System.out.println("name = " + pizza1.getName());
        System.out.println("Sauce = "+ pizza1.getSauce());
        System.out.println("Topping = "+ pizza1.getTopping());
        System.out.println();

        System.out.println("Pizza2");
        System.out.println("name = " + pizza2.getName());
        System.out.println("Sauce = "+ pizza2.getSauce());
        System.out.println("Topping = "+ pizza2.getTopping());
        System.out.println();
    }

pizza1의 정보가 pizza2에 똑같이 복사되는 것을 볼 수 있다.

링크로 가면 코드를 볼 수 있다.