什么是模板方法模式
所谓模板方法模式,就是定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
模板方法模式的实现方式
模板方法模式实际上时封装了一个固定流(tao)程(lu),第一步做什么,第二步做什么都已经在抽象类中定义好,子类只需要在框架不被修改的情况下实现某些步骤的算法替换。
当代小说网站的男频爽文,都是有一定套路的,开篇都是一个loser,然后意外获得秘笈,接下来修仙,最后成为宇宙霸主。我相信epubit的读者是不会读这些给识字不多的人读的书的,因此我要拿《红楼梦》中的“掰谎记”举例,贾母对某一类文学作品的套路的总结:
public abstract class Template { |
被贾母掰谎的作品《凤求凰》:
public class Courtship extends Template{ |
类似的作品《西厢记》:
public class WesternChamber extends Template{ |
贾母过了一个开心的元宵节,读者们也学会了模板方法模式。
Android源码中的模板方法模式
(1)AsyncTask
用户可以根据需求重写onPreExecute、doInBackground、onPostExecute这个逻辑流程,这是典型的模板方法模式。
(2)生命周期
无论Activity、Service还是Fragment,一切以“on”打头的被动方法都是模板方法模式的一部分。
Android开发中如何利用模板方法模式
模板方法模式的优点很明显:
(1)封装不变部分,扩展可变部分
(2)提取公共部分代码,便于维护。
因此适用于以下场合:
(1)多个子类有公有的方法,并且逻辑基本相同时。
(2)重复、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。
(3)重构时,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。
需要注意的几个问题
模板方法模式会带来代码阅读的难度。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。