1. // 用户客户端访问,解除与具体数据库访问的耦合
    2. public interface IUser {
    3. void Insert(User user);
    4. User GetUser(int id);
    5. }
    6. // 用于访问SQLServer的User
    7. public class SqlServerUser implements IUser {
    8. @Override
    9. public void Insert(User user) {
    10. // TODO Auto-generated method stub
    11. System.out.println("在SqlServer中给User新增一条记录");
    12. }
    13. @Override
    14. public User GetUser(int id) {
    15. // TODO Auto-generated method stub
    16. System.out.println("在SqlServer中根据ID获取到User一条记录");
    17. return null;
    18. }
    19. //用于访问AccessUser的User
    20. public class AccessUser implements IUser {
    21. @Override
    22. public void Insert(User user) {
    23. // TODO Auto-generated method stub
    24. System.out.println("在Access中给User新增一条记录");
    25. }
    26. @Override
    27. public User GetUser(int id) {
    28. // TODO Auto-generated method stub
    29. System.out.println("在Access中根据ID获取到User一条记录");
    30. return null;
    31. }
    32. }
    33. //定义一个创建访问User表对象的抽象的工厂接口
    34. public interface IFactory {
    35. IUser CreateUser();
    36. }
    37. // 实例化SqlServerUser
    38. public class SqlServerFactory implements IFactory {
    39. @Override
    40. public IUser CreateUser() {
    41. // TODO Auto-generated method stub
    42. return new SqlServerUser();
    43. }
    44. }
    45. // 实例化AccessUser
    46. public class AccessFactory implements IFactory {
    47. @Override
    48. public IUser CreateUser() {
    49. // TODO Auto-generated method stub
    50. return new AccessUser();
    51. }
    52. }
    53. public class Test {
    54. public static void main(String[] args) {
    55. // 使用Access
    56. User user =new User();
    57. IFactory factory = new AccessFactory();
    58. IUser iu = factory.CreateUser();
    59. iu.Insert(user);
    60. iu.GetUser(1);
    61. // 使用SqlServer
    62. User user1 =new User();
    63. IFactory factory1 = new SqlServerFactory();
    64. IUser iu1 = factory1.CreateUser();
    65. iu1.Insert(user1);
    66. iu1.GetUser(1);
    67. }
    68. }