工厂模式在电商系统中的应用实战

业余杂谈 herman 469浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

网上写工厂模式的书籍和博客一大堆,看似好多人都熟悉,但其实他们都对工厂模式很陌生,因为他们都不会应用。学而不用,还不如不学!

我也在群里问过很多人,别说工厂模式了,23 种设计模式我都看过。书都看了好几遍了,但是没有真正使用过。

一个工作过 4 年的程序员告诉我,他学设计模式只为了面试,因为工作中你不使用设计模式也没人考核你的 kpi。这和我们现代的教育有些类似哈,学习只为了考试!

所以,为了更好的完成面试,我给大家讲一讲工厂模式在实际项目中的应用。

项目中最常见的工厂模式就是 DAO 层,Service 层的封装。这个大家可能都知道,我就不在细说了,我列举两种可以使用工厂模式,但是可能你们又没有使用工厂模式的场景。当然我这里指的是我们的电商系统。

第一种最常见的应用场景就是报表系统的报表导出。领导要求,每天定时导出一些报表文件,通过邮件的形式抄送给某些对应的领导或管理人员。那我们就使用了工厂模式,抽象工厂方法。

为什么要这样设计呢?因为鬼知道领导哪天抽风,再增加什么类型的报表。所以为了更好的、更快的响应,并且设计的符合开闭原则。

生产报表事件:

// 订单报表
ReportEvent reportEvent = ReportEventFactory.getReportEvent(OrderReportEvent.class,parameter);
// 支付报表
ReportEvent reportEvent = ReportEventFactory.getReportEvent(PaymentReportEvent.class,parameter);
// 发货报表
ReportEvent reportEvent = ReportEventFactory.getReportEvent(DeliverReportEvent.class,parameter);
// 库存报表
ReportEvent reportEvent = ReportEventFactory.getReportEvent(StockReportEvent.class,parameter);
// 评论报表
ReportEvent reportEvent = ReportEventFactory.getReportEvent(CommentReportEvent.class,parameter);
......

将事件放到队列里:

boolean add = reportQueue.add(reportEvent);

取出报表事件,执行操作:

ReportEvent reportEvent = reportQueue.poll();
if (reportEvent != null) {
    threadPoolTaskExecutor.execute(reportEvent);
}

在报表系统中,存在着一个报表生成事件工厂,每个事件实现 run 接口,实现具体的报表生成操作。

第二种场景就是我们的电商系统中的评论了。你提交一次评论,需要经过我们的整个评论工厂处理。处理你的个人信息是否在黑名单中;判断你是否是恶意刷评论;评论是否有敏感词等。

比如,是否匿名。是匿名评论,通过获取对应实例进行匿名处理。

除了这些还有很多的使用场景。比如,你的个人积分达到 3000 积分,获得对应等级的礼包;达到 5000 积分获得不同的礼包,以此类推。

工厂模式在编码中普遍存在。比如:dubbo、Spring、Mybatis、Hibernate 等框架中都普遍存在!

最后记住,学会了一定要使用!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 工厂模式在电商系统中的应用实战