java 多型應用
阿新 • • 發佈:2018-12-22
MIS後臺統一流程處理
已新增操作為例子說明:
介面的定義:
public interface IMisTemplateIdService {
/** * 功能描述: 〈新增模板的資料資訊〉 * * @param schemaDataInfo * @return: com.missfresh.mis.admin.domain.bean.SchemaDataInfo * @author: wangbo * @date : 2018-12-14 17:58:08 */ Result<SchemaDataInfo> setSchemaDataInfo(SchemaDataInfo schemaDataInfo);
}
介面的實現:
//倉組的實現類
@Service("misWarehouseGroup") public class MisWarehouseGroupImpl extends MisTemplateIdCommonService implements IMisTemplateIdService{
@Override public Result<SchemaDataInfo> setSchemaDataInfo(SchemaDataInfo schemaDataInfo) {
//TODO 實現
}
}
//倉組和微倉的關係實現類
@Service("misWarehouseGroupRelation") public class MisWarehouseGroupRelationImpl implements IMisTemplateIdService {
@Override public Result<SchemaDataInfo> setSchemaDataInfo(SchemaDataInfo schemaDataInfo) throws YouSelfException { // 不支援該功能,直接拋異常 throw new YouSelfException(FailCodeEnum.ERR_SERVER_ERROR.getCode(), FailCodeEnum.ERR_SERVER_ERROR.getMessage()); }
}
//
不同的template場景,選擇不同實現
//
@Service("misTemplateIdServiceFactory") public class MisTemplateIdServiceFactory { private static Logger logger = LoggerFactory.getLogger(MisTemplateIdServiceFactory.class); /** 倉組模板id */ @Value("${template.id.warehouse-group}") private Long warehouseGroup; @Resource(name = "misWarehouseGroup") private IMisTemplateIdService misWarehouseGroup; /** 倉組和微倉關係模板id */ @Value("${template.id.warehouse-group-relation}") private Long warehouseGroupRelation; @Resource(name = "misWarehouseGroupRelation") private IMisTemplateIdService misWarehouseGroupRelation; /** * 功能描述: 〈根據templateId 選擇不同的實現〉 * * @param templateId * @return: com.missfresh.mis.admin.service.IMisTemplateIdService * @author: wangbo * @date : 2018-12-14 15:52:32 */ public IMisTemplateIdService getHandleService(Long templateId) { if (templateId.equals(warehouseGroup)) { return misWarehouseGroup; }else if(templateId.equals(warehouseGroupRelation)) { return misWarehouseGroupRelation; } else { //統一處理邏輯 return null; } } }
基於以上的操作在 MIS通過操作中:
實現了MIS的同一處理流程 模組id不同,底層操作不同 的功能