您的位置:首页 > 运维架构 > 网站架构

新版本兼容旧版本之架构设计示例

2016-10-21 01:42 148 查看
1.背景

  昨天工作,在数据库持久化方面遇到点疑惑,然后打开jar包研究源码,发现了点有趣的设计,这个框架有1.0版本内容,有2.0版本内容,“除非维护1.0版本老代码,不推荐使用1.0版本,即2.0版本兼容1.0版本”。

2.设计图

  此处欠uml图一张。。。

3.源码示例

  数据库持久化,最基础的增删改查。

  2.0版本通过PersistenceService来操作所有方法,1.0版本则通过单一的类操作某个方法即插入操作与删除操作不在一块儿。代码示例如下:

  PersistenceService.java

package com.persistence.newPackage;

import java.util.Map;

import com.persistence.DataResult;

public interface PersistenceService {

public int executeInsert(String sqlId, Map<String, Object> params);

public int executeInsertBatch(String sqlId, Map<String, Object> params);

public int executeDelete(String sqlId, Map<String, Object> params);

public int executeDeleteBatch(String sqlId, Map<String, Object> params);

public int executeUpdate(String sqlId, Map<String, Object> params);

public int executeUpdateBatch(String sqlId, Map<String, Object> params);

public DataResult executeQuery(String sqlId, Map<String, Object> params);

public DataResult executeQueryBatch(String sqlId, Map<String, Object> params);

}
  PersistenceServiceImpl.java

package com.persistence.newPackage;

import java.util.Map;

import com.persistence.DataResult;
import com.persistence.oldPackage.PersistenceServiceDelete;
import com.persistence.oldPackage.PersistenceServiceDeleteImpl;
import com.persistence.oldPackage.PersistenceServiceInsert;
import com.persistence.oldPackage.PersistenceServiceInsertImpl;
import com.persistence.oldPackage.PersistenceServiceQuery;
import com.persistence.oldPackage.PersistenceServiceQueryImpl;
import com.persistence.oldPackage.PersistenceServiceUpdate;
import com.persistence.oldPackage.PersistenceServiceUpdateImpl;

public class PersistenceServiceImpl implements PersistenceService {

private PersistenceServiceInsert insert;
private PersistenceServiceDelete delete;
private PersistenceServiceUpdate update;
private PersistenceServiceQuery query;

public PersistenceServiceImpl() {
insert = new PersistenceServiceInsertImpl();
delete = new PersistenceServiceDeleteImpl();
update = new PersistenceServiceUpdateImpl();
query = new PersistenceServiceQueryImpl();
}

public int executeInsert(String sqlId, Map<String, Object> params) {
return insert.executeInsert(sqlId, params);
}

public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return insert.executeInsertBatch(sqlId, params);
}

public int executeDelete(String sqlId, Map<String, Object> params) {
return delete.executeDelete(sqlId, params);
}

public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return delete.executeDeleteBatch(sqlId, params);
}

public int executeUpdate(String sqlId, Map<String, Object> params) {
return update.executeUpdate(sqlId, params);
}

public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return update.executeUpdateBatch(sqlId, params);
}

public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return query.executeQuery(sqlId, params);
}

public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return query.executeQueryBatch(sqlId, params);
}

}
  PersistenceServiceParent.java
package com.persistence.newPackage;

import java.util.Map;

import com.persistence.DataResult;

public class PersistenceServiceParent {

public int executeInsert(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public int executeInsertBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public int executeDelete(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public int executeUpdate(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return 0;
}

public DataResult executeQuery(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}

public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
/**
* 做真正的操作
*/
return null;
}

}
  下边类是1.0版本的:
  PersistenceServiceDelete.java

package com.persistence.oldPackage;

import java.util.Map;

public interface PersistenceServiceDelete {

public int executeDelete(String sqlId, Map<String, Object> params);
public int executeDeleteBatch(String sqlId, Map<String, Object> params);
}
  PersistenceServiceDeleteImpl.java
package com.persistence.oldPackage;

import java.util.Map;

import com.persistence.newPackage.PersistenceServiceParent;

public class PersistenceServiceDeleteImpl extends PersistenceServiceParent implements PersistenceServiceDelete {

@Override
public int executeDelete(String sqlId, Map<String, Object> params) {
return super.executeDelete(sqlId, params);
}

@Override
public int executeDeleteBatch(String sqlId, Map<String, Object> params) {
return super.executeDeleteBatch(sqlId, params);
}

}
  PersistenceServiceInsert.java
package com.persistence.oldPackage;

import java.util.Map;

public interface PersistenceServiceInsert {

public int executeInsert(String sqlId, Map<String, Object> params);
public int executeInsertBatch(String sqlId, Map<String, Object> params);
}
  PersistenceServiceInsertImpl.java
package com.persistence.oldPackage;

import java.util.Map;

import com.persistence.newPackage.PersistenceServiceParent;

public class PersistenceServiceInsertImpl extends PersistenceServiceParent implements PersistenceServiceInsert {

@Override
public int executeInsert(String sqlId, Map<String, Object> params) {
return super.executeInsert(sqlId, params);
}

@Override
public int executeInsertBatch(String sqlId, Map<String, Object> params) {
return super.executeInsertBatch(sqlId, params);
}

}
  PersistenceServiceQuery.java
package com.persistence.oldPackage;

import java.util.Map;

import com.persistence.DataResult;

public interface PersistenceServiceQuery {

public DataResult executeQuery(String sqlId,Map<String, Object> params);

public DataResult executeQueryBatch(String sqlId,Map<String, Object> params);
}
  PersistenceServiceQueryImpl.java
package com.persistence.oldPackage;

import java.util.Map;

import com.persistence.DataResult;
import com.persistence.newPackage.PersistenceServiceParent;

public class PersistenceServiceQueryImpl extends PersistenceServiceParent implements PersistenceServiceQuery {

@Override
public DataResult executeQuery(String sqlId, Map<String, Object> params) {
return super.executeQuery(sqlId, params);
}

@Override
public DataResult executeQueryBatch(String sqlId, Map<String, Object> params) {
return super.executeQueryBatch(sqlId, params);
}

}
  PersistenceUpdate.java
package com.persistence.oldPackage;

import java.util.Map;

public interface PersistenceServiceUpdate {

public int executeUpdate(String sqlId, Map<String, Object> params);
public int executeUpdateBatch(String sqlId, Map<String, Object> params);
}
  PersistenceUpdateImpl.java
package com.persistence.oldPackage;

import java.util.Map;

import com.persistence.newPackage.PersistenceServiceParent;

public class PersistenceServiceUpdateImpl extends PersistenceServiceParent implements PersistenceServiceUpdate {

@Override
public int executeUpdate(String sqlId, Map<String, Object> params) {
return super.executeUpdate(sqlId, params);
}

@Override
public int executeUpdateBatch(String sqlId, Map<String, Object> params) {
return super.executeUpdateBatch(sqlId, params);
}

}


  其实可以发现,1.0版本已经被2.0版本“架空”,而2.0版本的PersistenceService接口及其实现类也没有执行真正的操作。主要是学习了这个模块的架构设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐