模板模式的思想与注意点

这里先给个模板模式的UML,基本的模板模式的套路大家都知道是怎么回事,这里就不细说,这篇文章主要是探讨这种模式的思想与注意的地方。

模板模式

先抛出一个问题,如果要执行落库操作需要哪几个步骤?

如果你看到这个问题脑海中出现的是:”落库操作能有什么步骤,不就是直接插入数据库吗?“。如果你是这种想法的话那就说明你上升的空间很大,一般落库操作需要执行一下步骤。

1. 构造查询参数

2. 执行查询操作

3. 校验数据

4. 落库

上述提到的是一般步骤,但是也有可能步骤2,3顺序是颠倒,完全看你的个人看法。但是总体上都离不开这几步的。然后在想想上述几步如果都是一个抽象的方法,然后按照顺序放在一个对外的落库操作中。如下图所示

看看上图,然后想想,如果有几个个子类继承AbstractOrderOperator的话那是不是就是一个模板模式了。这里举的例子主要是告诉大家一种思想:“模板模式对一个大操作的细分”。

注意

像这种模板模式如果你没有没有一个良好的编程思想,极有可能会给队友会自己挖一个坑。为什么这么说,下面继续探讨。

这种模式内部的主要特点是与顺序挂钩,在上层将数据放入上下文对象(Context)中,然后在下层使用上层传递的数据。当从数据库中查询对象之后,有些人为了图方便或者其他原因喜欢修改原对象的值,然后在下层使用。举个例子,每件商品(Goods)都有自己的折扣,但是从A站点下单的商品的折扣一律5折,这个时候有些人图方便A站点下单的就事先0.5替换掉原商品的折扣然后在下面使用。如果后续操作需要原商品折扣那么就gg了。查询出的对象是一个整体,数据是干净的,不管是为了什么,如果直接修改原对象,那么该对象中就有了脏数据。这里告诉大家的一种思想是:“查询操作不要修改原对象值”。

总结

模板模式:模板模式就是对一个大操作的细分。

查询操作:查询操作不要修改原对象的值。

欢迎关注,不定期更新技术干货!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180812A0V57E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券