程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#抽象工廠簡單實現類

C#抽象工廠簡單實現類

編輯:C#入門知識

曾經參與開發過的的項目,一般都是采用MVC模式進行開發,大概框架圖如下:

\

web界面層調用BLL業務層,BLL通過抽象工廠DALFactory動態生成繼承了IDAL的數據庫操作層實例,以進行對數據庫的各項操作。

DALFactory這層主要是根據web配置,通過反射動態生成IDAL實例,方便BLL層調用。

以前的做法是,IDAL每增加一個接口(如IUser),DALFactory就得添加一個方法用於產生繼承了該接口的實例類.粗略代碼:

 

public class DataAccess
{

protected static readonly string path = ConfigurationManager.AppSettings["ReportDemo_DAL"];

public static IExcel_ReportCell CreateExcel_ReportCell()
{
string className = path + "." + typeof(IExcel_ReportCell).Name.Substring(1);
return (IExcel_ReportCell)Assembly.Load(path).CreateInstance(className);
}

public static IExcel_Reportcondition CreateExcel_Reportcondition()
{
string className = path + "." + typeof(IExcel_Reportcondition).Name.Substring(1);
return (IExcel_Reportcondition)Assembly.Load(path).CreateInstance(className);
}
//更多....

}

這樣就會有一個問題A:每添加一個接口就得創建一個工廠方法。感覺太麻煩了,於是對這個工廠進行了修改,代碼如下:

 1 using System.Reflection;
2  using System.Web;
3  using System.Web.Caching;
4  using System.Configuration;
5
6  namespace EHRExcelReprot.DALFactory
7 {
8 public sealed class ObjDataAccess<T>
9 {
10 //獲取web.confg文件配置信息
11   private static readonly string path = ConfigurationManager.AppSettings["ExcelReportDAL"];
12 public static T Get()
13 {
14 //注意:這裡一定要確保這樣一個命名規則:接口類名稱只比繼承它的類名稱前面多一個‘I’字母
15 //如:接口類名:IUser,繼承它的類:User
16   string CacheKey = path +
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved