프로토 타입 패턴

ITKHJ·2023년 4월 7일
0

GoF의 디자인 패턴

목록 보기
14/16
post-thumbnail

프로토 타입 패턴

  • 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법(재활용, 프로토 타입)
  • clone으로 복제를 해서 사용하면 동일한 작업을 반복하지 않아도 된다.
  • 인스턴스를 만들 때 시간이 오래 걸리는 작업 등(데이터베이스를 읽어오거나, 네트워크를 거쳐서 가져온 데이터를 기반으로 데이터를 만든다거나 할때)을 할때 기존 데이터를 가져오거나, 복사를 해서 새로운 인스턴스를 만들고, 우리가 원하는 값만 변경해서 사용할 수 있게 하는 패턴

※ 클론은 새로운 인스턴스 이기 때문에 주소는 다르지만(!=, false), 내용은 같다(Equals, ture)

※ clone : 자바가 기본적으로 제공하는 매커니즘. 얕은 복사.

clone은 object안에 들어가 있으며, public이 아닌 protected이기 때문에 그냥 사용할 수 없다.

※ clone을 지원하고 싶은 메서드가 있다면 implements Cloneble을 해줘야 지원이 가능함.

※ 얕은 복사 & 깊은 복사

  • 얕은 복사(Shallow Copy) : 객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성
  • 깊은 복사(Deep Copy) : 객체를 복사 할 때, 해당 객체와 인스턴스 변수까지 복사하는 방식

프로토 타입 패턴의 장/단점

장점

  • 복잡한 객체를 만드는 과정을 숨길 수 있다.
  • 기존 객체를 복제하는 과정이 새 인스턴스를 만드는 것보다 비용(시간 또는 메모리)적인 면에서 효율적일 수도 있다.
  • 추상적인 타입을 리턴할 수 있다.

단점

  • 복제한 객체를 만드는 과정 자체가 복잡할 수 있다.(특히, 순환 참조가 있는 경우)
profile
모든 업무 지식 작성하자!

0개의 댓글