Dev/[DesignPattern]

[Dev] 프로토타입 패턴 (prototype)에 대해 알아보자

호락호락한순무 2023. 7. 25. 23:58
반응형

프로토타입 패턴 (Prototype Pattern)

프로토타입 패턴은 객체 지향 디자인 패턴 중 하나이며, 객체의 생성 과정을 단순화하여 새로운 객체를 생성하는 방법을 제공합니다. 이 패턴은 이미 존재하는 객체(프로토타입)를 복제하여 새로운 객체를 생성하는 것으로, 생성 비용이 높은 객체를 효율적으로 생성할 수 있습니다.

프로토타입 패턴의 작동 방식

프로토타입 패턴은 다음과 같은 단계로 작동합니다:

  1. 프로토타입 객체 생성: 프로토타입 객체는 원본 객체로서 복제될 준비가 된 객체입니다. 이 객체를 통해 새로운 객체가 생성됩니다.

  2. 복제: 프로토타입 객체를 복제하여 새로운 객체를 생성합니다. 이때 객체는 얕은 복제(shallow copy) 또는 깊은 복제(deep copy) 방식으로 생성될 수 있습니다.

  3. 새로운 객체 사용: 복제된 객체를 사용하여 필요한 작업을 수행합니다. 필요한 경우에는 복제된 객체의 값을 수정할 수도 있습니다.

프로토타입 패턴의 예시

class Car:
    def __init__(self, model, manufacturer):
        self.model = model
        self.manufacturer = manufacturer

    def clone(self):
        return Car(self.model, self.manufacturer)

# 프로토타입 객체 생성
car_prototype = Car("Sedan", "Hyundai")

# 프로토타입 복제
car1 = car_prototype.clone()
car2 = car_prototype.clone()

# 복제된 객체 사용
car1.model = "SUV"
print(car1.model)  # 출력: SUV
print(car2.model)  # 출력: Sedan

위의 예시에서, Car 클래스는 프로토타입 객체입니다. clone 메서드를 통해 프로토타입 객체를 복제하여 새로운 Car 객체를 생성할 수 있습니다. 복제된 객체는 독립적으로 사용할 수 있으며, 필요한 경우에는 객체의 값을 수정할 수도 있습니다.

프로토타입 패턴의 장단점

장점

  • 객체 생성 비용을 줄일 수 있습니다. 이미 생성된 객체를 복제함으로써 객체 생성 과정을 생략할 수 있습니다.
  • 객체 생성 과정이 복잡한 경우, 프로토타입 패턴은 객체 생성 과정을 단순화할 수 있습니다.

단점

  • 객체 복제에 있어서 얕은 복제와 깊은 복제의 선택은 중요한 문제입니다. 객체가 내부 참조를 가지고 있는 경우, 깊은 복제를 통해 내부 참조 객체까지 복제해야 합니다. 이는 복제 과정의 복잡성을 증가시킵니다.
  • 프로토타입 객체 생성 후, 복제 과정을 통해 객체를 생성하는 것이 어려운 경우에는 프로토타입 패턴을 적용하기 어렵습니다.

결론

프로토타입 패턴은 객체 생성 비용을 줄이는 데 유용한 디자인 패턴입니다. 이미 존재하는 객체를 복제하여 새로운 객체를 생성하는 방식으로, 객체 생성 과정의 단순화와 효율적인 자원 활용을 가능하게 합니다. 사용 방법과 장단점을 고려하여 프로토타입 패턴을 적절히 사용하면 개발 과정에서 유용할 수 있습니다.

반응형
//