设计模式 学习笔记(7) 抽象工厂模式、状态模式

(15)抽象工厂模式

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

  反射技术,.net引用命名空间using System.Reflection,可以帮助我们客服抽象工厂模式的先天不足。

Assembly.load("程序集名称").CreateInstance("命名空间.类名称")
//常规的写法
IUser result=new SqlserverUser();
//反射的写法
using System.Reflection;

IUser result=(IUser)Assembly.Load(“当前'程序集'的名称”)。createInstance("当前'命名空间'名称.要实例化的类名");

  利用反射技术,将程序由编译时转为运行时。由于'CreateInstance("抽象工厂模式.SqlserverUser")'中的字符串是可以写成变量的,可以由这个变量具体值由SQLServer还是Access来决定。

 1 using System.Reflection;       //引入反射
 2 class DataAccess
 3 {
 4     private static readonly string AssemblyName="程序集名称";
 5     private static readonly string db="数据集名称";
 6    
 7      public static IUser CreateUser()
 8     {
 9         string className=AssemblyName+"."+db+"User";
10         return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
11     }
12     
13     public static IDepartment CreateDepartment()
14     {
15         string className=AssemblyName+"."+db+"Department";
16         return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);
17     }
18 }
View Code

(16)状态模式

  

  

posted on 2013-06-01 11:33  小邦happy  阅读(298)  评论(0编辑  收藏  举报

导航