SMALL

프로토타입 패턴은 new 키워드를 사용하지 않고 객체를 복제해 생성하는 패턴입니다.

기존 객체를 복제하면 신규 객체를 생성하는 것보다 자원이 절약됩니다.

 

프로토타입의 사전적 의미는 '원형'입니다. 복제 대상이 되는 원본 객체를 원형이라고 합니다.

 

프로토타입 패턴의 특징

적은 리소스로 많은 객체를 생성하는 데 유용

 

생성 패턴 :

기존 객체를 복제함으로써 코드의 양과 새로운 객체를 생성하는 처리 로직 수행 과정을 줄인다

 

대량 생산 :

new 키워드를 이용해 인스턴스화 작업을 하는 것보다 복제를 통해서 대량의 객체를 생산하는 게 더욱 효율적이다

 

유사 객체 :

프로토타입 패턴으로 객체를 복제하고 상탯값만 변경해서 사용하는 것이 유용하다

 

객체 생성이 어려운 경우 :

기존의 객체 생성 방법을 몰라도 복제해서 사용하면 실체 객체의 구체적인 형식을 몰라도 객체를 생성할 수 있다

 

public class Hello implements Cloneable {
	private List<String> list;
	public Hello(List<String> list) {
		this.list = list;
	}
	
	// Shallow copy
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

	public List<String> getList() {
		return list;
	}

	public void setList(List<String> list) {
		this.list = list;
	}
}
	public static void main(String[] args) throws CloneNotSupportedException {
		List<String> name = new ArrayList<>();
		name.add("Kim");
		name.add("Lee");
		name.add("Kang");
		
		Hello hello = new Hello(name);
		System.out.println(hello.getList().toString());
		
		Hello copyed = (Hello)hello.clone();
		copyed.getList().add("Jang");
		System.out.println(copyed.getList().toString());
	}
    // 실행 결과
    [Kim, Lee, Kang]
    [Kim, Lee, Kang, Jang]

 

LIST

+ Recent posts