Week06 总结
目前参与的项目,是一个车联网项目平台,由多种角色围绕着同一个订单展开
一.多种角色
1.用户方,消费者的车出了故障,可以找打电话找下单方进行报案,也可以使用平台的app或者h5下单
2.下单方,如保险公司,114,有消费者方的资源,但是没有服务方的资源
3.平台方,主要是对接服务方和下单方,将服务方和下单方的资源在平台汇集,进行匹配
4.服务方,接单并提供服务,去现场进行故障维修服务
二.一个订单有不同的生命周期,不同状态触发不同的事件
1.新建,发消息给平台方
2.已派单,记录变更时间,打语音电话给服务方提醒服务方接单
3.重新派单,记录变更时间,打语音电话给服务方提醒服务方接单
4.已接单,记录变更时间,发消息给平台方
5.已到达,记录变更时间
6.派单失败,记录变更时间
三.目前订单类型分为两种,事故和救援
目前的代码架构
1.事故和故障两份代码,共用的方法用if语句去区别,两者订单共用数据库表结构,以orderType字段去区分,两者有些字段80%的字段时一致的,20%的字段不一致
2.当状态变更的时候,在变更的流程里同步阻塞地依次调研各种方法
3.多种角色,根据当前登录用户的角色,用if去区分不同操作逻辑
改进
1.采用策略,为多种角色创建对应的类对象,共同实现一个接口,该接口定义了各个角色都具有的方法,根据当前登录用户角色动态的执行该方法
2.采用模版方法模式,为订单创建抽象订单类,事故和故障分别继承抽象订单类,在抽象订单类中定义通用的操作,子类根据自己的业务特点重写父类的方法
3.观察者设计模式
为订单状态设置监听器,当状态变更时,触发对应的方法,后期可以改成异步非阻塞调用
评论