设计模式 - 抽象工厂+反射

2016-05-02  本文已影响444人  Mitchell

有些代码是伪代码,运行不起来。

一、概述


二、举例

using System.Reflection
class IFactory
{
    IUser CreateUser();
}
class SqlserverFactory :IFactory
{
    public CreateUser()
    {
        return new SqlserverUser();
    }
}
class  AccessFactory: IFactory
{
    public CreateUser()
    {
        return new AccessUser();
    }
}
//数据库类
class DataAccess
{
    private static readonly string AssemblyName = "抽象工厂模式";
    //根据配置文件中的配置来创建相应的数据库。
    private static readonly stirng db = ConfigurationManager.AppSettings["DB"];
    
    //利用反射机制来创建 IUser 类
    public static IUser CreateUser()
    {
        string className = AccessblyName+"."+db +"User";
        return (IUser)AssemblyName.Load(AssemblyName).CreateInstance(className);
    }
    //利用反射机制来创建 IDepartment 类
    public static IDepartment CreateDepartment()
    {
        string className = AccessblyName + "." +db + "Department";
        return (IDepartment)AssemblyName.Load(AccessblyName).CreateInstance(className);
    }
}
//配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="DB" value="Sqlserver"/>
    </appSettings>
</configuration>
上一篇 下一篇

猜你喜欢

热点阅读