你必须要知道的架构知识~第二章 代码是否面向对象,要看你的继承怎么用
兒子今天玩的有點晚了,所以今天的文章寫的也有點晚了,呵呵!
從標題上可以知道,今天主要來講繼承,事實上是“繼承”在項目架構中有沒有用,如果有用,那應該如何去用的問題,一說到繼承就肯定會說兩個東西,基類(父類)和派生類(子類),在架構中,我們這樣定義一個基類:當很多類型有相同的屬性或相似的行為時,我們應該把它們的公共部分提取到一個新的類型中,這個類我們稱為它們的基類,基類在架構中多為抽象類,即本身只定義和簡單的實現,具體的調用和復雜邏輯由它的子類去實現和復寫。
在N層架構中,UI層,Service層及Data層都應該有自己的基類,而基類的主要作用就是將通用的部分進行抽象,這樣在功能擴展,代碼維護等方面都會變得方便,當然也更符合面向對象的原則。
UI層的基類:
/// <summary>/// Controller基ù類à/// </summary>public class BaseController : System.Web.Mvc.Controller{/// <summary>/// 數y據Y統3一?操ù作÷對?象ó/// </summary>protected IDataContext _db { get; set; }/// <summary>/// 用?戶§操ù作÷權¨限T/// </summary>protected int UserOperatorRole { get; set; }/// <summary>/// 當±前°登?陸?的?用?戶§ID/// </summary>protected long Current_UserID { get; set; }} /// <summary>/// 數y據Y庫a基ù類à/// </summary>public abstract class DataBase{/// <summary>/// 數y據Y庫a對?象ó/// </summary>protected DataContext _db = new DataContext();/// <summary>/// 統3一?提á交?動ˉ作÷/// </summary>protected virtual void SubmitChanges(){try{_db.SubmitChanges();}catch (System.Data.Linq.ChangeConflictException ex){throw;}}}在使用它們時,通過是用一個具體功能類去繼承它們,以便來使用它們公開的屬性和方法,如下:
我們看到上面的HomeController類型繼承了BaseController類型,它的構造方法提供了帶參和空參的方法重載,這樣寫的好處是更好的實現代碼的松耦合,提供代碼的穩定性及可測試性,即,當我們使用空參構造類實例時,它會建立默認的數據訪問對象,而如果我們希望建立一個“測試”的內存數據對象時,可以使用第二個構造方式進行建立對象。
?
從本篇文章開始,將會出現大量的代碼,以便去說明問題,希望符合大家的胃口。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的你必须要知道的架构知识~第二章 代码是否面向对象,要看你的继承怎么用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.Net防止页面刷新重复提交
- 下一篇: VNC 远程控制工具软件