设计模式--模板模式

一、定义

        模板模式是一种行为设计模式,它在抽象类里定义了一个操作中的算法骨架,将一些步骤的实现延迟到子类。这样一来,子类可以在不改变算法结构的基础上,重新定义算法里某些步骤的具体实现。

二、包含结构

        模板模式中包含抽象类和具体子类

        1.抽象类:包含有模板方法、具体方法和抽象方法。模板方法定义了算法的骨架,抽象方法则由子类对其重写来实现。
        2.具体子类:实现抽象类中的抽象方法,完成其中特定步骤的具体实现。

三、优缺点

        1.优点:

                (1)代码复用性高:将固定不变的部分封装在抽象类的模板方法中,可变的部分则交由子类来实现,从而避免了代码的重复编写。

                (2)可维护性强:由于其核心部分在抽象类的模板方法中,当需要修改算法的整体结构时,只需要在抽象类中进行修改,而不会影响到各个子类。

                (3)符合开闭原则:“对扩展开放,对修改关闭”。可以通过创建新的子类来扩展其中的某些步骤,而无需修改抽象类中的模板方法。

                (4)反向控制结构:允许子类在不改变算法的整体结构的情况下,重新定义算法中的某些步骤,实现了子类对父类的反向控制。

        2.缺点:

                (1)类的数量增加:抽象类和具体子类的数目过多,会导致系统的类结构变得复杂,增加了理解和维护的难度。

                (2)灵活性受限:因为抽象类中的模板方法已经固定了,导致子类的一些实现可能会受到一定的限制。

                (3)调试难度的增加:如果具备了过多的抽象方法和具体方法,并且这些方法分布在抽象类和具体子类中,导致的调试难度的增加。

四、适用场景

        多个子类有多个共有的方法,且逻辑基本相同,那么就可以将这些共有的方法封装起来,形成模板方法,对于一些特定的步骤,则交由子类来实现。

五、示例代码:

        场景为制作不同的饮品,通用流程封装在抽象类中,特定的流程由子类来实现。

        运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值