这里先给个模板模式的UML,基本的模板模式的套路大家都知道是怎么回事,这里就不细说,这篇文章主要是探讨这种模式的思想与注意的地方。
模板模式
先抛出一个问题,如果要执行落库操作需要哪几个步骤?
如果你看到这个问题脑海中出现的是:”落库操作能有什么步骤,不就是直接插入数据库吗?“。如果你是这种想法的话那就说明你上升的空间很大,一般落库操作需要执行一下步骤。
1. 构造查询参数
2. 执行查询操作
3. 校验数据
4. 落库
上述提到的是一般步骤,但是也有可能步骤2,3顺序是颠倒,完全看你的个人看法。但是总体上都离不开这几步的。然后在想想上述几步如果都是一个抽象的方法,然后按照顺序放在一个对外的落库操作中。如下图所示
看看上图,然后想想,如果有几个个子类继承AbstractOrderOperator的话那是不是就是一个模板模式了。这里举的例子主要是告诉大家一种思想:“模板模式对一个大操作的细分”。
注意
像这种模板模式如果你没有没有一个良好的编程思想,极有可能会给队友会自己挖一个坑。为什么这么说,下面继续探讨。
这种模式内部的主要特点是与顺序挂钩,在上层将数据放入上下文对象(Context)中,然后在下层使用上层传递的数据。当从数据库中查询对象之后,有些人为了图方便或者其他原因喜欢修改原对象的值,然后在下层使用。举个例子,每件商品(Goods)都有自己的折扣,但是从A站点下单的商品的折扣一律5折,这个时候有些人图方便A站点下单的就事先0.5替换掉原商品的折扣然后在下面使用。如果后续操作需要原商品折扣那么就gg了。查询出的对象是一个整体,数据是干净的,不管是为了什么,如果直接修改原对象,那么该对象中就有了脏数据。这里告诉大家的一种思想是:“查询操作不要修改原对象值”。
总结
模板模式:模板模式就是对一个大操作的细分。
查询操作:查询操作不要修改原对象的值。
欢迎关注,不定期更新技术干货!
领取专属 10元无门槛券
私享最新 技术干货