最近工作上有一个保存企业微信聊天记录的需求,遇到一些问题,数据量太大了,该怎么存?存储之后要检索,怎么才能检索的快呢?聊天产生的文件太多了,怎么去重?需求一句话,可是苦了开发人员了。,以后有时间指北君会整理一下做这个功能的问题和解决方法,今天就拿其中一个问题来分析,使用策略模式来解决问题,没有了解过策略模式或者长时间不用已经忘了策略模式的小伙伴先来简单了解一下策略模式吧。,官话:策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化。,简单理解就是,针对不同的场景,使用不同的策略进行处理。,
,策略模式结构图,场景:最近太热了,想要降降温,有什么办法呢?,首先,定义一个降温策略的接口。,定义3种降温策略;实现策略接口;,定义一个降温策略的上下文;,测试;,运行结果:,以上就是一个策略模式的简单实现。,场景,以我自己在工作中遇到的场景为例,《企业微信会话存档》功能,获取各种格式的消息内容,进行解析并保存数据。这里只针对消息处理的功能模块,其他关于《企业微信会话存档》的功能,有时间整理一下再发出来。,企业微信会话聊天会产生如下多种消息,在SpringBoot项目中应该如何使用策略模式来完成消息的解析呢?,
,企业微信消息格式,获取会话内容 - API 看API内容,数据都是json格式。思考应该如何处理:,两个策略接口;,策略的具体实现(伪代码);,策略上下文;,使用方式(伪代码);,以上就是策略模式的一种实现方式;,使用策略模式来处理不同格式的消息,虽然多了很多策略类,但是让整个功能模块的代码变得清晰,松耦合,而且很容易扩展和修改,并不会影响其他流程。,从以上的例子很明显的可以看出,策略模式的灵活性;如果此时企业微信提供了一种新的消息格式,那么根本无需修改之前的代码,只需要再写一个新的类,实现消息处理策略的接口,重写处理方法即可;,了解策略模式的优点和缺点,合理的使用策略模式,会让你的代码更加的整洁优雅。
© 版权声明
文章版权归作者所有,未经允许请勿转载。