프로토타입 패턴
프로토 타입 패턴이란?⌗
원형이 되는 인스턴스로 새로운 객체 종류를 명시하고
객체를 복사하여 새로운 객체를 생성하는 패턴
구조도⌗
Prototype
- 복제 자체에 대한 인터페이스를 선언합니다.
ConcretePrototype
- 복제 자체에 대한 작업을 구현합니다.
Client
- 프로토타입을 복제하도록 요청하여 새 개체를 만듭니다.
왜 사용할까? 이점은?⌗
객체 생성시에 비용이 크게 드는 경우.
객체의 각 부분을 조합해서 생성하는 형태에도 적용이 가능하기에 비교적 간단하게 객체를 생성할 수 있다.
유의사항⌗
프로토타입 패턴을 구현시에 복사하는 연산, clone()
메소드에 대한 구현인데
얕은 복사와 깊은 복사에 대한 문제가 있다
인스턴스 변수까지 복사하는지 변수를 공유하는지 대한 문제.
얕은 복사, 깊은 복사⌗
얕은 복사[Shallow Copy
], 깊은 복사[Deep Copy
]에 대해 간단히 알아보자
얕은 복사의 경우
- 객체를 복사시에 해당 객체만 복사하여 새 객체를 생성한다.
- 원본의 참조값만 복사하여.
인스턴스의 변수는 원본, 복사본 모두 같은 값을 바라보게 된다.- 바라보는 변수값이 변경되면 원본, 복사본 모두 변경된다.
깊은 복사의 경우
- 객체를 복사 할 때, 해당 객체와 인스턴스 변수까지 복사하는 방식.
- 참조는 공유하지 않는다.