适配器的应用(泛型模式)

适配器模式是一种重要的设计模式,能让代码简练。直接上代码。
定义接口,如下所示:

复制代码
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);
    } 

总结:适配器设计模式是一种很常见的设计模式。

 

posted @   郭慕荣  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示