在這個紛繁的社會裡面,統一性的特點能夠帶來很多高效的產出、牢固的記憶,這種特徵無論對於企 業、個人的開發工作,知識的傳承都有著非常重要的作用,Winfrom架構本身就是基於這個理念而生,從 統一的資料庫設計規則開始,統一的項目格局,統一的業務類、資料訪問類、實體類繼承關係,再到統 一的公用類庫,統一的許可權管理模組,統一的字典管理模組,統一的附件管理...,理解這些理念和規則 後,再來個終極的統一,架構代碼快速產生--Database2Sharp代碼產生工具。所有的架構(包括傳統 Winform開發架構、WCF開發架構、混合式開發架構、Web開發架構)都融合到這裡來,統一整合各種看似 零散,實則高度滲透的模組,統一的步伐除了時間、效力外,帶來給我更多的饋贈。本文主要介紹我的 Winform架構(也包括其他架構的特點)的業務對象統一調用的方式,介紹如何通過BLLFactory或者 CallerFactory的公用類庫來實現各種業務對象的建立工作。
1、BLLFactory的對象統一調用規則
在我的架構裡面,所有的業務類調用都是以BLLFactory入口進行開始建立,傳遞業務對象進去即可創 建,這種統一入口的方式能夠方便記憶,並減少代碼,更重要的是能夠很好把一些如緩衝規則、建立規 則封裝起來,簡化代碼。BLLFactory的建立示意圖如下所示。
既然是統一調用規則方式,那麼BLLFactory的類庫就應該提升到公用類庫的層級,所以提供Winform 架構支援的公用類庫如下所示。
當然,為了減少代碼,提高開發效率,整體的架構處處體現了代碼重用的規則,儘可能把重複的代碼 提取出來,因此還有很多如資料訪問基類、業務訪問基類、資料訪問基類介面、實體基類等類庫,結合 泛型能夠使我們的API更加統一化、強型別化,提高開發效率。由於BLLFactory是公用類庫層級,所有獨 立開發的模組,也都是以該類庫為統一入口,建立所必須的對象。
我們看看架構如何能夠在紛繁複雜的類庫裡面,準確建立一系列的對象的。
BLLFactory業務對象工廠輔助類的代碼如下所示。
/// <summary> /// 對業務類進行構造的工廠類 /// </summary> /// <typeparam name="T">業務物件類型</typeparam> public class BLLFactory<T> where T : class { private static Hashtable objCache = new Hashtable(); private static object syncRoot = new Object(); /// <summary> /// 建立或者從緩衝中擷取對應業務類的執行個體 /// </summary> public static T Instance { get { string CacheKey = typeof(T).FullName; T bll = (T)objCache[CacheKey]; //從緩衝讀取 if (bll == null) { lock (syncRoot) { if (bll == null) { bll = Reflect<T>.Create(typeof(T).FullName, typeof(T).Assembly.GetName().Name); //反射建立,並緩衝 objCache.Add(typeof(T).FullName, bll); } } } return bll; } } }