我学会了,模板方法模式

116 阅读1分钟

前言

模板方法模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。

模板方法模式

使用场景:在定义特定功能模板的时候,可以使用这种模式,这种模式强制性的定义了功能接口,同时也让你可以在功能接口处进行扩展操作。这种模式强制性的定义了交互行为,你必须得按照模板的来。

理解:这是一种类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,很实用,但需要根据业务需求好好设计。模板方法模式一般都是在模板方法类中实现一部分功能然后再定义一部分功能接口,然后通过继承的方式去实现这部分功能接口,从而达成复用扩展的目的。模板方法是一个编程技巧,得注重设计,要清楚哪部分需要在模板方法类中实现,哪部分需要在模板方法类中定义功能接口。

namespace action_mode_02 {

    // 模板方法类:进餐
    abstract class Dining {

        private diningBefore() {
            console.log(' ================= 用餐前 ================= ')
        }

        protected abstract dining(): void

        private diningAfter() {
            console.log(' ================= 用餐后 ================= ')
        }

        startEat() {
            this.diningBefore()
            this.dining()
            this.diningAfter()
        }

    }

    // 产品类 1:肯德基
    class KFC extends Dining {
        protected dining(): void {
            console.log('肯德基:喝可乐,吃汉堡薯条')
        }
    }

    // 产品类2:自助餐
    class Buffet extends Dining {
        protected dining(): void {
            console.log('自助餐:喝饮料,吃烤肉火锅')
        }
    }


    const kfc = new KFC()
    const buffet = new Buffet()

    kfc.startEat()
    buffet.startEat()
    
}