1. namespace 抽象工厂模式
    2. {
    3. class Program
    4. {
    5. static void Main(string[] args)
    6. {
    7. User user = new User();
    8. Department dept = new Department();
    9. IUser iu = DataAccess.CreateUser();
    10. iu.Insert(user);
    11. iu.GetUser(1);
    12. IDepartment id = DataAccess.CreateDepartment();
    13. id.Insert(dept);
    14. id.GetDepartment(1);
    15. Console.Read();
    16. }
    17. }
    18. class User
    19. {
    20. private int _id;
    21. public int ID
    22. {
    23. get { return _id; }
    24. set { _id = value; }
    25. }
    26. private string _name;
    27. public string Name
    28. {
    29. get { return _name; }
    30. set { _name = value; }
    31. }
    32. }
    33. class Department
    34. {
    35. private int _id;
    36. public int ID
    37. {
    38. get { return _id; }
    39. set { _id = value; }
    40. }
    41. private string _deptName;
    42. public string DeptName
    43. {
    44. get { return _deptName; }
    45. set { _deptName = value; }
    46. }
    47. }
    48. interface IUser
    49. {
    50. void Insert(User user);
    51. User GetUser(int id);
    52. }
    53. class SqlserverUser : IUser
    54. {
    55. public void Insert(User user)
    56. {
    57. Console.WriteLine("在Sqlserver中给User表增加一条记录");
    58. }
    59. public User GetUser(int id)
    60. {
    61. Console.WriteLine("在Sqlserver中根据ID得到User表一条记录");
    62. return null;
    63. }
    64. }
    65. class AccessUser : IUser
    66. {
    67. public void Insert(User user)
    68. {
    69. Console.WriteLine("在Access中给User表增加一条记录");
    70. }
    71. public User GetUser(int id)
    72. {
    73. Console.WriteLine("在Access中根据ID得到User表一条记录");
    74. return null;
    75. }
    76. }
    77. interface IDepartment
    78. {
    79. void Insert(Department department);
    80. Department GetDepartment(int id);
    81. }
    82. class SqlserverDepartment : IDepartment
    83. {
    84. public void Insert(Department department)
    85. {
    86. Console.WriteLine("在Sqlserver中给Department表增加一条记录");
    87. }
    88. public Department GetDepartment(int id)
    89. {
    90. Console.WriteLine("在Sqlserver中根据ID得到Department表一条记录");
    91. return null;
    92. }
    93. }
    94. class AccessDepartment : IDepartment
    95. {
    96. public void Insert(Department department)
    97. {
    98. Console.WriteLine("在Access中给Department表增加一条记录");
    99. }
    100. public Department GetDepartment(int id)
    101. {
    102. Console.WriteLine("在Access中根据ID得到Department表一条记录");
    103. return null;
    104. }
    105. }
    106. class DataAccess
    107. {
    108. private static readonly string AssemblyName = "抽象工厂模式";
    109. private static readonly string db = ConfigurationManager.AppSettings["DB"];
    110. public static IUser CreateUser()
    111. {
    112. string className = AssemblyName + "." + db + "User";
    113. return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
    114. }
    115. public static IDepartment CreateDepartment()
    116. {
    117. string className = AssemblyName + "." + db + "Department";
    118. return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);
    119. }
    120. }
    121. }