【机房收费系统】——工厂

        抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类

        用抽象工厂模式来实现数据库访问程序作为例子

        产品抽象类:产品有可能有许多不同的实现

        具体产品:对抽象产品的具体实现

        工厂类:包含所有产品创建的方法并且能够创建出具体的对象

        总结抽象工厂模式的定义:工厂类就是接口(DataAccess),作用是创建一系列相关或相互依赖对象(sqlUser   AccessUser   sqlDepartment AccessDepartment),我们就不必再实例化他们的具体类来得到相应的对象

代码C#:

工厂层反射技术的应用

        用反射技术来去除switch或if,解除分支判断带来的耦合。


[csharp]  view plain copy print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Reflection;  
  6.   
  7. namespace 抽象工厂  
  8. {  
  9.     class DateAccess  
  10.     {  
  11.         //static静态变量或者函数可以不用实例化类而直接访问  
  12.         //定义两个私有的静态的只读的变量  
  13.         //assemblyname代表的是命名空间  
  14.         private static readonly string AssemblyName = "抽象工厂";  
  15.         //db代表的是数据库  
  16.         private static readonly string db = "sqlserver";  
  17.   
  18.         //定义两个静态的函数 返回值是表的接口  
  19.         public static IUser CreatUser()  
  20.         {  
  21.             //字符串: 抽象工厂.sqlserverUser---类的名字  
  22.             string classname = AssemblyName + "." + db + "User";  
  23.   
  24.             //反射的格式:最终返回的是iuser类型的 sqlserverUser类的实例  
  25.             return (IUser)Assembly.Load(AssemblyName).CreateInstance(classname);  
  26.         }  
  27.   
  28.         public static IDepartment CreatDepartment()  
  29.         {  
  30.             string classname = AssemblyName + "." + db + "Department";  
  31.   
  32.             //最终返回的是sqlserverDepartment类的实例  
  33.             return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(classname);  
  34.         }  
  35.     }  
  36. }  

        第三遍机房收费系统,每一次都用不同的语言,每一次都有新的感悟。





你可能感兴趣的:(【机房收费系统】——工厂)