工作周记

来源:互联网 发布:java用汉字组成的图案 编辑:程序博客网 时间:2024/04/27 03:36

完成任务:紫钻官网挖宝藏页面买道具送一次抽奖,主要逻辑:抽奖逻辑及支付逻辑,奖品的发放逻辑:父类BaseProcessor里有一个PresentReleaseService,PresentReleaseService里有个map,每当一个子类Processor初始化时(Spring自动扫描),就往PresentReleaseService里的map里放自己(和奖品类型对应),这样PresentReleaseService只有一个,map也只有一个,发放的时候根据奖品类型从map里拿Processor,每个子类Processor重写getProcessorType()方法和release()方法

public abstract class BaseProcessor implements ReleaseProcessor { 
    @Autowired
    protected PresentReleaseService presentReleaseService;
    @PostConstruct
    public void registerProcesser() {
presentReleaseService.register(getProcessorType(),this);
    }
    abstract protected int getProcessorType();
}

public class PresentReleaseServiceImpl implements PresentReleaseService {

private Map<Integer, ReleaseProcessor> releaseProcessors = new HashMap<Integer, ReleaseProcessor>();

 @Override
    public void register(Integer type, ReleaseProcessor releaseProcessor) {
ReleaseProcessor previousReleaseProcessor = releaseProcessors.put(type, releaseProcessor);
if (previousReleaseProcessor != null) {
   throw new RuntimeException("注册器检测到相同的奖品发放逻辑,请保证发放逻辑的唯一性。冲突的奖品类型为:" + type);
}
    }

}

// 发放逻辑

ReleaseProcessor releaseProcesser = releaseProcessors.get(present.getType());
if (releaseProcesser != null) {
result = releaseProcesser.release(uid, present, remark);

}


下单验证器Validator逻辑也是这样

0 0
原创粉丝点击