适配器模式具体使用

来源:互联网 发布:如果大幅贬值 知乎 编辑:程序博客网 时间:2024/06/05 00:13

目录

看着猪奔跑系列(一)
首先适配器模式分为 三种: 类适配器,对象适配器,接口适配器
实际中怎么使用呢,

做与数据库的交互封装

1 : 实际开发中,我们和数据库交互时,肯定是有
getList() getPage()
所以 我将 这个 当成是 公共方法,他们肯定是写在一个公共类pubBase
让其他的dao层或者 Repository层调用,
2: 这个公共类pubBase 就是 待适配,可以给任何 dao层使用的,
3:但是 实际生产中,仅仅是 pubBase提供的方法肯定是不够的,于是我还有自己 的 userDao ,deptDao的接口 他们会有 getListByid 或者 deleteByuserName(),
**问题来了 我要实现 userDao ,但是又需要 有 pubBase 的公共方法,所以 我需要使用 适配器,创建一个适配器,让他兼具两者的 长处

// 定制的 targetTable dao层的 接口public interface PushApprovalWorkFlowRepository {    /**     * 展示审批流程     */    List getApprovalList(String type, String permit, String quotedPriceCodeOrVIN);    List<PushApprovalWorkFlowModel> constructModel(PushApprovalWorkFlowModel model);}// pubBasepublic abstract class BaseRepository {    @PersistenceContext    protected EntityManager entities;     protected List getEntityList(String sqlStr, Map params) {        Query query = this.entities.createQuery(sqlStr);        if (params != null) {            for (Object key : params.keySet()) {                query.setParameter((String) key, params.get(key));            }        }        return query.getResultList();    }     protected PageData getPage(String sqlStr, int pageSize, int pageIndex) {        return this.getPage(sqlStr, Maps.newHashMap(), pageSize, pageIndex);    }}重点来了,这个适配器类 继承 pubbase,实现 targetTablepublic class PushApprovalWorkFlowRepositoryImpl extends BaseRepository implements PushApprovalWorkFlowRepository {    public List getApprovalList(String permit)  }

适配器出来的这个类 既可以使用 base中的方法,有实现了 Dao中的方法