适配器的应用(泛型模式)
适配器模式是一种重要的设计模式,能让代码简练。直接上代码。
定义接口,如下所示:
public interface IOrderOperate<C, U, D> { /** * 创建单据 */ boolean creatOrder(C param); /** * 批量创建 * @param param * @return */ boolean batchCreateOrder(C param); /** * 修改单据 */ boolean updateOrder(U param); /** * 删除单据 */ boolean deleteOrder(D param); }
定义抽象类如下所示:主要是在抽象类中完成保存,修改调用第三方接口实现的逻辑。
@Component @Slf4j public abstract class AbstractOperate<C, U, D> implements IOrderOperate<C, U, D> { @Autowired private SalesRepo salesRepo; protected abstract SaveDTO convertCreate(C param); protected abstract List<UpdateDTO> convertUpdate(U param); protected abstract DelDTO convertDelete(D param); @Override public boolean creatOrder(C param) { SaveDTO createParam = convertCreate(param); return salesRepo.saveSalesUnInvoice(createParam); } @Override public boolean updateOrder(U param) { List<UpdateDTO> updateParams = convertUpdate(param); return salesRepo.updateSalesUnInvoice(updateParams); } @Override public boolean deleteOrder(D param) { DelDTO deleteParam = convertDelete(param); return salesRepo.deleteUnInvoiceBySalesOrderId(deleteParam); } }
定义适配器实现,完成参数转化,也就是目标的接口需要的参数。
@Component @Slf4j public class SalesInvoiceAdapter extends AbstractOperate<SalesRefundOrderCreateMessageDto, SalesRefundOrderUpdateMessageDto, SalesRefundOrderDeleteMessageDto> { @Autowired private SalesRefundRepo salesRefundRepo; @Override protected SaveDTO convertCreate(SalesRefundOrderCreateMessageDto param) { SalesRefundOrderDetailDto salesRefundOrderDetailDto = salesRefundRepo.getById(param.getId()); SaveSalesUnInvoiceDTO createParam = new SaveSalesUnInvoiceDTO();return createParam; } @Override protected List<UpdateDTO> convertUpdate(SalesRefundOrderUpdateMessageDto param) { SalesRefundOrderDetailDto salesRefundOrderDetailDto = salesRefundRepo.getById(param.getId()); UpdateSalesDTO updateParam = new UpdateSalesDTO();return Arrays.asList(updateParam); } @Override protected DelDTO convertDelete(SalesRefundOrderDeleteMessageDto param) { List<SalesRefundOrderDO> salesRefundOrderDOList = salesRefundRepo.getByIds(param.getIds()); DelUnInvoiceBySalesIdDTO deleteParam = new DelUnInvoiceBySalesIdDTO();return deleteParam; } }
调用实现代码如下所示:调用适配器的操作逻辑方法即可。
public static void main(String[] args) { salesAdapter.updateOrder(salesMessageDto); }
总结:适配器设计模式是一种很常见的设计模式。
郭慕荣博客园
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类