通过模板方法模式——对短信中的文本内容进行敏感词过滤,及将文本内容与敏感词词库做匹配的实现

本文介绍了模板方法模式,通过一个具体的业务场景——短信文本内容的敏感词过滤,详细阐述了如何利用该模式实现代码复用。文章提到了抽象模板、具体模板以及模板方法、基本方法的概念,并展示了如何通过接口和抽象类定义模板方法,以及在不同加载方式下子类对抽象方法的实现,以此提高代码的可读性和拓展性。
摘要由CSDN通过智能技术生成

前言

模板方法模式是最为常见的几个模式之一(也比较简单),是基于继承实现代码复用的基本技术。

模板方法模式(TemplateMethod Pattern)的定义是:首先定义了一个由若干执行步骤组成的执行过程(形成模板),而将一些步骤延迟在子类中实现,使得子类能够对其中一个或者多个具体步骤进行重新定义,从而改变最终的执行结果。

什么是模板方法模式

模板方法模式的UML类图如下:

这里涉及到了两个角色:

  • 抽象模板 AbstractTemplate

定义并实现了一个模板方法。这个模板方法一般是一个具体的方法,它定义了一个顶级逻辑的框架,而逻辑的组成步骤由抽象方法和其他具体方法组成,抽象方法在子类中实现。

定义了一个或者多个抽象方法,这个/些抽象方法是模板方法的一部分,组成模板方法内一个或者多个步骤。

  • 具体模板 ConcreteTemplate

实现抽象父类定义的一个或者多个抽象方法,它们是模板方法的组成步骤。

每一个抽象模板都可以有任意多个具体模板的实现,每一个具体模板都可以给出这些抽象方法的不同实现,从而改变模板方法最后的执行结果。

模板方法模式中的方法


模板方法模式中的方法可以分为两大类:模板方法和基本方法

模板方法

模板方法是定义在抽象类中的,把基本操作组合在一起形成一个总的执行过程。 一个抽象类可以有任意多个模板方法,而不限于一个,每一个模板方法都可以调用任意多个具体方法。

基本方法

基本方法又可以进一步划分成:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)

抽象方法:抽象方法由抽象类声明并最终由具体子类实现,从而改变模板方法的最终执行结果

具体方法:具体方法由抽象类声明并实现,子类不一定需要实现(除非是需要重写改方法)

钩子方法:钩子方法由抽象类声明并实现,而子类会对其进行拓展,通常抽象类给出的实现是一个空实现,作为方法的默认实现。

使用场景:对短信的文本内容进行敏感词过滤

之前做过的一个业务场景是:对短信的文本内容进行敏感词过滤,需要将文本内容与敏感词词库做匹配,通过加载敏感词文件即可获取全部的违禁词,敏感词文件可以放在服务器内的某一个具体路径,也可以是放在项目内的Resource目录下,在这两个位置下加载方式是有区别的,但是除此之外违禁词的读取、存放都是相同的。

定义了一个接口SensitiveWordLoader、一个抽象类SensitiveWordAbstractFileLoader,以及两个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿啄debugIT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值