프런트엔드/디자인 패턴

[4일차] 프로토타입 | 생성 패턴 5일만에 끝내기 챌린지 - GoF 디자인 패턴

조드래곤나인 2023. 7. 16. 14:44

 

출처: 에릭 감마 , 리처드 헬름 , 랄프 존슨 , 존 블리시디스. 『Gof의 디자인 패턴』. 김정아(역). 프로텍미디어, 2015.

 

 

[4일차] 프로토타입(Prototype)
생성 패턴 5일만에 끝내기 챌린지 - GoF 디자인 패턴

타입스크립트로 설명하는 GoF 디자인 패턴의 생성 패턴 5일만에 끝내기 챌린지

 

 

프로토타입이란?

원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고,
이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다.

 

 

활용성

1) 제품의 생성, 복합, 표현 방법에 독립적인 제품을 만들고자 할 때
2) 제품 클래스 계통과 병렬적으로 만드는 팩토리 클래스를 피하고 싶을 때
3) 클래스로 꼭 정의 할 필요없는 경우, 클래스의 수를 줄이고 싶을 때

 

 

구조 및 구현

interface Prototype {
    clone(): Prototype
}

class ConcretePrototype implements Prototype {
    private state = 0
    constructor(origin?: ConcretePrototype) {
        if (origin) {
            this.state = origin.state
        }
    }
    clone() {
        return new ConcretePrototype(this)
    }
    addState (state: number) {
        this.state += state
    }
    log() {
        console.log(this.state)
    }
}
 
class Main {
    constructor() {
        const product1 = new ConcretePrototype()
        product1.log() // 0

        const product2 = product1.clone()
        product2.addState(10)
        product2.log() // 10

        const product3 = product2.clone()
        product3.addState(10)
        product3.log() // 20
    }
}
 

 


 

728x90