最近在设计一个服务的API,下面是对API如何易用的一些思考。
比如我们的模块中需要依赖StageStatSupport;
@Inject
private StageStatSupport stageStatSupport;
首先要避免参数过多的情况,比如这样使用肯定是不行的。
stageStatSupport.log(bizGroup, collectingPoint,"gather",getActionName(),"error",new String[]{"tag1","tag2"},1)
重构封装成JavaBean,草!怎么这么多行代码
StageStat stat = new StageStat();
stat.setBizGroup(bizGroup);
stat.setCollectPoint(collectingPoint);
stat.setActionType(StageStat.PERSISTENCE);
stat.setAction(type);
stat.setMetric("count");
stat.setSum(processedCount);
stageStatSupport.log(stat);
最后采用fluent模式,一行搞定
stageStatSupport.statAction(bizGroup, collectingPoint,getActionName(),"error").count();
总结:按照业务职责分解,把需要由外部用户创建的JavaBean封装在内部来创建能降低代码的复杂度保持简洁