接口是这样使用的,在“Global.cs”里根据WebConfig中的信息利用工厂模式,返回了这样一个接口,而在数据访问的“DataComponent.cs”数据访问组件,又利用这个接口,对数据库进行了访问。
疑问:这里的接口貌似只要一个传递的作用,传递了“ConnectionString”和“Database”。那么这样一个接口可不可以用一个“静态方法”,public static Iprovider来实现,而不定义为一个接口类型。或者是使用下面继承了接口的“Provider”类。根据这个例子,说说使用接口和直接实例化接口的好处是什么?它比直接使用“静态方法”或是“继承了接口的方法”相比有什么优势???
接口在使用时是这样的:
“Global.cs”里:
IProvider provider = null;
provider = ProviderFactory.CreateProvider(connectionString, "M_Common", "M_Common.Data.Separate.SqlServer");
ApplicationEnvironments.DefaultProvider = provider;
“ApplicationEnvironments.cs”里:
public static IProvider DefaultProvider
{
get
{
return _provider;
}
set
{
_provider = value;
}
}
“DataComponent.cs”里:
#region 所有原始方法
IProvider _provider;
/// <summary>
/// 构造函数
/// </summary>
public DataComponent()
{
_provider = ApplicationEnvironments.DefaultProvider;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="connection">提供连接类</param>
public DataComponent(IProvider provider)
{
//从参数中取得
_provider = provider;
}
接口代码如下:
using System;
using System.Collections.Generic;
using System.Text;using M_Common.Data.Separate;namespace M_Common.Data
{
/// <summary>
/// 数据访问驱动接口
/// </summary>
public interface IProvider
{
/// <summary>
/// 数据库连接字符
/// </summary>
string ConnectionString
{
get;
set;
} /// <summary>
/// 数据库
/// </summary>
AbstractDatabase Database
{
get;
set;
}
} internal class Provider:IProvider
{
public Provider(string connectionString,AbstractDatabase database)
{
ConnectionString = connectionString;
Database = database;
} #region Properties
string _ConnectionString = "";
public string ConnectionString
{
get
{
return _ConnectionString;
}
set
{
_ConnectionString = value;
}
} AbstractDatabase _Database ;
public AbstractDatabase Database
{
get
{
return _Database;
}
set
{
_Database = value;
}
}
#endregion
}
}
疑问:这里的接口貌似只要一个传递的作用,传递了“ConnectionString”和“Database”。那么这样一个接口可不可以用一个“静态方法”,public static Iprovider来实现,而不定义为一个接口类型。或者是使用下面继承了接口的“Provider”类。根据这个例子,说说使用接口和直接实例化接口的好处是什么?它比直接使用“静态方法”或是“继承了接口的方法”相比有什么优势???
接口在使用时是这样的:
“Global.cs”里:
IProvider provider = null;
provider = ProviderFactory.CreateProvider(connectionString, "M_Common", "M_Common.Data.Separate.SqlServer");
ApplicationEnvironments.DefaultProvider = provider;
“ApplicationEnvironments.cs”里:
public static IProvider DefaultProvider
{
get
{
return _provider;
}
set
{
_provider = value;
}
}
“DataComponent.cs”里:
#region 所有原始方法
IProvider _provider;
/// <summary>
/// 构造函数
/// </summary>
public DataComponent()
{
_provider = ApplicationEnvironments.DefaultProvider;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="connection">提供连接类</param>
public DataComponent(IProvider provider)
{
//从参数中取得
_provider = provider;
}
接口代码如下:
using System;
using System.Collections.Generic;
using System.Text;using M_Common.Data.Separate;namespace M_Common.Data
{
/// <summary>
/// 数据访问驱动接口
/// </summary>
public interface IProvider
{
/// <summary>
/// 数据库连接字符
/// </summary>
string ConnectionString
{
get;
set;
} /// <summary>
/// 数据库
/// </summary>
AbstractDatabase Database
{
get;
set;
}
} internal class Provider:IProvider
{
public Provider(string connectionString,AbstractDatabase database)
{
ConnectionString = connectionString;
Database = database;
} #region Properties
string _ConnectionString = "";
public string ConnectionString
{
get
{
return _ConnectionString;
}
set
{
_ConnectionString = value;
}
} AbstractDatabase _Database ;
public AbstractDatabase Database
{
get
{
return _Database;
}
set
{
_Database = value;
}
}
#endregion
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货