1. // 简单工厂改进
    2. public class DataSimpleFactory {
    3. public static String db = "";
    4. public static IUser CreateUser() {
    5. IUser result = null;
    6. switch (db) {
    7. case "SqlServer":
    8. result = new SqlServerUser();
    9. break;
    10. case "Access":
    11. result = new AccessUser();
    12. break;
    13. }
    14. return result;
    15. }
    16. }
    17. // 反射
    18. public class DataSQLServerReflection {
    19. private static final String db = "SqlServer";
    20. public static IUser CreateUser() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
    21. return (IUser) Class.forName("com.design.eleven.database.abstractfactory.improve."+db+"User").newInstance();
    22. }
    23. public static IDepartment CreateDepartment() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
    24. return (IDepartment) Class.forName("com.design.eleven.database.abstractfactory.improve."+db+"Department").newInstance();
    25. }
    26. }
    27. public class DataAccessReflection {
    28. private static final String db = "Access";
    29. public static IUser CreateUser() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
    30. return (IUser) Class.forName("com.design.eleven.database.abstractfactory.improve."+db+"User").newInstance();
    31. }
    32. public static IDepartment CreateDepartment() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
    33. return (IDepartment) Class.forName("com.design.eleven.database.abstractfactory.improve."+db+"Department").newInstance();
    34. }
    35. }
    36. public class Test {
    37. public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    38. System.out.println("---------使用简单工厂-----------");
    39. User user =new User();
    40. Department department =new Department();
    41. // SQL
    42. DataSimpleFactory.db = "SqlServer";
    43. IUser iUser=DataSimpleFactory.CreateUser();
    44. iUser.Insert(user);
    45. iUser.GetUser(1);
    46. // Access
    47. DataSimpleFactory.db = "Access";
    48. IUser iUser1=DataSimpleFactory.CreateUser();
    49. iUser1.Insert(user);
    50. iUser1.GetUser(1);
    51. System.out.println("----------使用反射,实例化完返回一个可操作对象------------");
    52. // SQL
    53. IUser createUser1 = DataSQLServerReflection.CreateUser();
    54. IDepartment createDepartment1 = DataSQLServerReflection.CreateDepartment();
    55. createUser1.Insert(user);
    56. createUser1.GetUser(1);
    57. createDepartment1.Insert(department);
    58. createDepartment1.GetDepartment(1);
    59. // Access
    60. IUser createUser = DataAccessReflection.CreateUser();
    61. IDepartment createDepartment = DataAccessReflection.CreateDepartment();
    62. createUser.Insert(user);
    63. createUser.GetUser(1);
    64. createDepartment.Insert(department);
    65. createDepartment.GetDepartment(1);
    66. }
    67. }