[디자인패턴] 생성 (Prototype Pattern)

Hyeri Park·2023년 2월 1일
0

JAVA/Spring 기초

목록 보기
22/22
post-thumbnail

1. 디자인 패턴 정의

https://velog.io/@hyeri_hello/Java-3-%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4

2. Prototype Pattern

처음부터 일반적인 원형을 만들어놓고 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
기존 객체를 복제함으로써 객체를 생성 한다.

3. Prototype Pattern 장점 및 특징

재사용성: 프로토타입 패턴을 사용하면 기존 개체를 새 개체를 만들기 위한 청사진으로 재사용할 수 있으므로 시간과 각각의 새 객체를 생성하는 데 필요한 노력.

유연성: 패턴을 사용하면 런타임에 새 객체를 생성할 수 있으므로 응용 프로그램의 요구 사항에 따라 객체를 생성할 수 있는 유연성이 제공됩니다.

성능: 프로토타입을 복제하여 새 개체를 만드는 것이 처음부터 새 개체를 만드는 것보다 빠르고 효율적입니다. 특히 개체의 구조가 복잡한 경우에는 더욱 그렇습니다.

결합 감소: 프로토타입 패턴은 객체 자체의 실제 구현에서 객체 생성 프로세스를 분리하여 나머지 코드에 영향을 주지 않고 향후 객체 생성 방식을 쉽게 변경할 수 있습니다. .

추상화: 프로토타입 패턴은 객체 생성 프로세스를 추상화하여 코드를 이해하고 유지하기 쉽습니다.

4. 코드예제

/** Prototype Class **/
public class Cookie implements Cloneable {

   public Object clone() {
      try {
         Cookie copy = (Cookie)super.clone();

         //In an actual implementation of this pattern you might now change references to
         //the expensive to produce parts from the copies that are held inside the prototype.

         return copy;

      }
      catch(CloneNotSupportedException e) {
         e.printStackTrace();
         return null;
      }
   }
}

/** Concrete Prototypes to clone **/
public class CoconutCookie extends Cookie { }

/** Client Class**/
public class CookieMachine {

   private Cookie cookie;//could have been a private Cloneable cookie;

   public CookieMachine(Cookie cookie) {
      this.cookie = cookie;
   }
   public Cookie makeCookie() {
      return (Cookie)cookie.clone();
   }
   public Object clone() { }

   public static void main(String args[]) {
      Cookie tempCookie =  null;
      Cookie prot = new CoconutCookie();
      CookieMachine cm = new CookieMachine(prot);
      for (int i=0; i<100; i++)
         tempCookie = cm.makeCookie();
   }
}
profile
Backend Developer

0개의 댓글