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

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

我也在群里问过很多人,别说工厂模式了,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 等框架中都普遍存在!

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

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

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

原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/252739.html

(0)
上一篇 2022年5月4日 19:49
下一篇 2022年5月4日 19:53

相关推荐

发表回复

登录后才能评论