老师能举个栗子来刻画下核心逻辑和辅助逻辑怎样分离么

来源:2-16 实战场景Coding训练:解读反射-代理-AOP 并结合业务逻辑实现(1)

慕粉4331336

2021-03-09

老师中的课程中提到,下单支付的核心逻辑是两个

  1. 下单
  2. 支付

并且伴随着一些其他的辅助逻辑

  1. 通知
  2. 记录日志

想知道在Java项目中,随着项目的复杂性逐渐增大,上面的一整个下单逻辑代码会进行怎样演化。
最直接的想法是对于通知独立抽离出一个NotifyService来通知,下单成功之后执行NotifyService的方法,但是很明显感觉这样很普通,随着可能功能的不断增加,依然需要插入很多补充的业务逻辑,如果是单纯的用AOP,AOP中的相关逻辑也是不断增加的,通过这个栗子老师能按照您的思路简单说说演化过程,是怎样一步一步的抽象,综合应用各种设计模式,最后实现分离的。谢老仙[手动鲜花]

写回答

3回答

求老仙

2021-03-10

如果系统很复杂, AOP是一种编程手段。 而更重要的是,对象的设计。 用户在支付上下文中完成下单,在活动上下文中参与活动,在购物上下文中选购商品。 对于系统设计,复杂度会逐渐增大,建议阅读下Eric Evans的领域驱动设计。 比如支付完触发Notify,那Notify对支付是什么能力? 是核心能力吗?还是支撑能力?如果是支撑能力,那就可以解耦。 解耦可以用AOP,也可以用消息队列,也可以用发布订阅……

1
1
慕粉4331336
非常感谢!
2021-03-10
共1条回复

求老仙

2021-03-10

以微信为例:

核心域:聊天、关系、朋友圈

支撑域:短视频、、小程序、公众号

通用域:用户、安全、实名认证、短信……

2
0

求老仙

2021-03-10

以电商系统为例:

核心域(核心竞争力): 商品、商户、库存、订单、物流等

支撑域(不是核心竞争力):支付、搜索、直播、客服、店铺装修……

通用(所有业务都需要):权限、安全、数据、消息推送……

1
0

笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

深度剖析大厂面试高频真题,让你秒变offer收割机

1783 学习 · 314 问题

查看课程