面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...
在我上一篇文章發(fā)表后,收到了很多博友的回復(fù),其中有一位博友提了一個問題,TestBase?繼承了ITest是多余的,我認(rèn)為,我有必要再寫一篇文章來說明一下,TestBase為什么要繼承ITest,當(dāng)然各位也可以再次發(fā)表自己的看法。
1 /// <summary>2 /// 數(shù)據(jù)統(tǒng)一接口規(guī)范3 /// </summary>4 interface ITest5 {6 /// <summary>7 /// 插入方法8 /// </summary>9 void Insert(); 10 }還是那個統(tǒng)一接口規(guī)范,這時,有個ADO.NET 的數(shù)據(jù)基類,它會去實現(xiàn)它,如下
1 /// <summary>2 /// 統(tǒng)一實體基類3 /// ADO.NET操作基類4 /// </summary>5 abstract class TestBase : ITest6 {7 8 #region ITest 成員9 10 public virtual void Insert() 11 { 12 Console.WriteLine("使用ADO.NET操作方式去實現(xiàn)它"); 13 } 14 15 #endregion 16 }而我們的系統(tǒng)中,還有一種數(shù)據(jù)源,它叫Linq To SQL,同時它又是一個很好的ORM工具,它幫助我們很好的把實體數(shù)據(jù)庫進(jìn)行映射進(jìn)來了。它作為由linq to sql產(chǎn)生的實體的基類,去實現(xiàn)統(tǒng)一接口,如下:
1 /// <summary>2 /// 統(tǒng)一實體基類3 /// Linq To SQL操作基類4 /// </summary>5 abstract class TestBase : ITest6 {7 8 #region ITest 成員9 10 public virtual void Insert() 11 { 12 Console.WriteLine("使用Linq To SQL操作方式去實現(xiàn)它"); 13 } 14 15 #endregion 16 }這時,我們有兩個數(shù)據(jù)基類去實現(xiàn)了這個統(tǒng)一操作接口,這時,如果有其它數(shù)據(jù)源,如為單元測試提供的內(nèi)存流數(shù)據(jù)庫,也是去實現(xiàn)統(tǒng)一操作規(guī)范。事實上,在DATA層提供了多種實現(xiàn)統(tǒng)一操作接口的方式,而它們的實體子類需要去分別繼承各自的基類和自己的個性化接口接口,而最終使用哪種數(shù)據(jù)庫去實現(xiàn),我們可以通過IOC進(jìn)行動態(tài)設(shè)定它。這只是最底層的層次,事實上,在每個實體操作的接口與實現(xiàn)中,還存在著這種關(guān)系,而這種關(guān)系一定會被約束在配置文件中,你可以根據(jù)配置的方式,在程序運(yùn)行時去動態(tài)創(chuàng)建你的實例,當(dāng)然這同樣是IOC干的事。
本文轉(zhuǎn)自博客園張占嶺(倉儲大叔)的博客,原文鏈接:面向?qū)ο蟮墓适聗數(shù)據(jù)底層操作告訴了我們接口,抽象類,繼承與多態(tài)性的使用~續(xù)(TestBase繼承ITest是多余的?),如需轉(zhuǎn)載請自行聯(lián)系原博主。
總結(jié)
以上是生活随笔為你收集整理的面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 清除应用程序数据,And
- 下一篇: android viewpager 滑动