模板方法

本文介绍了模板方法设计模式的概念及应用场景,并通过实例说明了如何在Android自定义View和Java排序算法中应用该模式。此外还探讨了在算法执行过程中如何灵活运用‘钩子’来增加算法的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



模板方法的定义:

在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

下面是UML图,


使用的场景:

在android中,我们进行自定义view的使用,必须重写view的 OnMeasure, OnLayout,OnDraw三个方法,这个就是使用了模板方法设计模式。

在java中,java提供的排序算法,你必须实现 compareTo()方法,实际上这也是模板方法的设计模式,因为太常见了,我们很少去问为什么,提醒的是,在java 6一下的版本中,使用mergerSort也就是归并方法进行排序,在java 8中则使用的是TimSort排序,所以在实际中注意兼容性。


其次,关于“钩子”的问题,虽然在模板中定义好了步骤,但是在实际中,有些步骤可以不使用,或者在一定的条件下触发使用,这个时候,需要考虑使用钩子,钩子就是针对这种情况下产生的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值