객체지향

[ES6] 템플릿 메소드 패턴 예제

소행성왕자 2022. 5. 9. 13:30

상속을 이용한 템플릿 메소드 패턴 예제 

다형성을 이용하여 load() 메소드 호출시 각각 자식의 _load() 메소드가 호출된다.

다형성 = 내적일관성 + 대체가능성


// 공통 부분
const Order = class {
    #id;
    #name;
    constructor(name) {
        this.#name = name;
    }
    getName() {
        return this.#name;
    }
    load() {
        const content = "[공통] 부모 > 자식변수 [content]";
        this._load(content);  // 위임 부분
    }
    _load(v) { throw "override"; } // HOOK
}
const ord1 = class extends Order {
    constructor() {
        super("자식 > 부모 [order1]");
    }
    _load(v) {
        console.log(">> ord1");
        console.log(this.getName());
        console.log(v);
    }
}
const ord2 = class extends Order {
    constructor() {
        super("자식 > 부모 [order2]");
    }
    _load(v) {
        console.log(">> ord2");
        console.log(this.getName());
        console.log(v);
    }
}

const o = new ord1();
o.load();

const o2 = new ord2();
o2.load();