情景:
项目原先是基于sql server数据库,后来要改为access数据库,需要的改动很多。
最基本的数据访问程序,实现新增用户和得到用户
用户类:
package abstractfactory;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
sqlserveruser类,用于操作user类:
package abstractfactory;
public class SqlserverUser {
public void Insert(User user){
System.out.println("增加user");
}
public User GetUser(int id){
System.out.println("根据id得到user");
return null;
}
}
客户端代码:
package abstractfactory;
public class Main {
public static void main(String[] args) {
User user = new User();
SqlserverUser su = new SqlserverUser();
su.Insert(user);
su.GetUser(1);
}
}
这里SqlserverUser su = new SqlserverUser(); 使得su这个对象被框在sql server上了,如果是多态的,那么执行 su.Insert(user)和 su.GetUser(1)就可以不用考虑数据库
用工厂方法模式的数据访问程序:
Iuser接口:
package abstractfactory2;
public interface IUser {
public void Insert(User user);
public User GetUser(int id);
}
sqlserverUser类:访问sql server的user
package abstractfactory2;
public class SqlserverUser implements IUser {
@Override
public void Insert(User user) {
System.out.println("增加一条user记录"