// 用户客户端访问,解除与具体数据库访问的耦合public interface IUser { void Insert(User user); User GetUser(int id);}// 用于访问SQLServer的Userpublic class SqlServerUser implements IUser { @Override public void Insert(User user) { // TODO Auto-generated method stub System.out.println("在SqlServer中给User新增一条记录"); } @Override public User GetUser(int id) { // TODO Auto-generated method stub System.out.println("在SqlServer中根据ID获取到User一条记录"); return null; }//用于访问AccessUser的Userpublic class AccessUser implements IUser { @Override public void Insert(User user) { // TODO Auto-generated method stub System.out.println("在Access中给User新增一条记录"); } @Override public User GetUser(int id) { // TODO Auto-generated method stub System.out.println("在Access中根据ID获取到User一条记录"); return null; }}//定义一个创建访问User表对象的抽象的工厂接口public interface IFactory { IUser CreateUser();}// 实例化SqlServerUserpublic class SqlServerFactory implements IFactory { @Override public IUser CreateUser() { // TODO Auto-generated method stub return new SqlServerUser(); }}// 实例化AccessUserpublic class AccessFactory implements IFactory { @Override public IUser CreateUser() { // TODO Auto-generated method stub return new AccessUser(); }}public class Test { public static void main(String[] args) { // 使用Access User user =new User(); IFactory factory = new AccessFactory(); IUser iu = factory.CreateUser(); iu.Insert(user); iu.GetUser(1); // 使用SqlServer User user1 =new User(); IFactory factory1 = new SqlServerFactory(); IUser iu1 = factory1.CreateUser(); iu1.Insert(user1); iu1.GetUser(1); }}