美文网首页设计模式
设计模式-模板方法模式

设计模式-模板方法模式

作者: Hengry | 来源:发表于2023-10-15 07:52 被阅读0次

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤的具>体实现留给子类。这使得子类可以在不改变算法结构的情况下重定义算法中的某些步骤。

以下是一个简单的模板方法模式的案例,假设我们正在开发一个烹饪应用,用于烹饪不同类型的食物,如意大利面和汉堡。我们将创建一个抽象烹饪类,其中包含烹饪食物的通用算法,并让子类实现具体的烹饪步骤。

首先,定义抽象烹饪类:

class Cooking {
    // 模板方法,定义了烹饪的整个过程
    func cook() {
        prepareIngredients()
        cookFood()
        serveFood()
    }
    
    // 抽象方法,子类必须实现
    func prepareIngredients() {
        // 子类实现食材准备步骤
    }
    
    // 抽象方法,子类必须实现
    func cookFood() {
        // 子类实现烹饪步骤
    }
    
    // 抽象方法,子类必须实现
    func serveFood() {
        // 子类实现上菜步骤
    }
}

然后,创建具体的烹饪子类,如意大利面和汉堡:

class SpaghettiCooking: Cooking {
    override func prepareIngredients() {
        print("准备意大利面和酱料")
    }
    
    override func cookFood() {
        print("煮意大利面")
    }
    
    override func serveFood() {
        print("上桌意大利面")
    }
}

class BurgerCooking: Cooking {
    override func prepareIngredients() {
        print("准备汉堡餐包、牛肉和蔬菜")
    }
    
    override func cookFood() {
        print("烤汉堡")
    }
    
    override func serveFood() {
        print("上桌汉堡")
    }
}

现在,你可以使用这些具体的烹饪子类来制作不同的食物:

let spaghettiCooking = SpaghettiCooking()
spaghettiCooking.cook()

let burgerCooking = BurgerCooking()
burgerCooking.cook()

通过模板方法模式,我们定义了烹饪食物的通用算法,但将食材准备、烹饪和上菜这些具体步骤留给了子类来实现。这使得我们可以轻松地添加新的烹饪类型而不影响算法的整体结构,同时保持了代码的一致性和可维护性。

相关文章

网友评论

    本文标题:设计模式-模板方法模式

    本文链接:https://www.haomeiwen.com/subject/osxabdtx.html