代(dai)碼重構(gou)~方(fang)法歸父
這幾天牙痛(tong)的(de)厲害(hai),所(suo)有(you)一直(zhi)沒有(you)寫(xie)博(bo)客,今天正好有(you)個培訓(xun)的(de)機會,所(suo)以(yi)就把“代碼重構”這塊(kuai)的(de)內(nei)容整理(li)了一下(xia),首先看(kan)一下(xia)方(fang)法(fa)歸(gui)父吧(ba)。
方法歸父 — 或譯函數上(shang)移,指的(de)是(shi)方(fang)(fang)法(fa)從子類(lei)移動到父類(lei),為(wei)(wei)什么呢,其主(zhu)要原(yuan)因(yin)就(jiu)是(shi)一個方(fang)(fang)法(fa)在多個類(lei)中(zhong)出現了,這(zhe)樣違背了REP原(yuan)則,出現了重復的(de)代(dai)(dai)碼(ma),這(zhe)時,我(wo)們稱為(wei)(wei)"代(dai)(dai)碼(ma)的(de)壞味道",我(wo)們需要將代(dai)(dai)碼(ma)進行(xing)重構,將這(zhe)個方(fang)(fang)法(fa)提升到它們的(de)基類(lei)中(zhong)進行(xing)
實現,當前如果子類有各自(zi)的(de)邏輯(ji),還可以(yi)將父類的(de)方法(fa)聲明為(wei)virtual虛方法(fa),這(zhe)樣(yang),子類可以(yi)根據自(zi)己的(de)業務去重寫它.
代碼如下:
1 #region 方法歸父 2 /// <summary> 3 /// 多于一個類中都有相同的Insert方法,這時,我們應該 4 /// 考(kao)慮將Insert方(fang)法歸到父(fu)到中 5 /// </summary> 6 class sub1 7 { 8 /// <summary> 9 /// 插入方法 10 /// </summary> 11 public void Insert() 12 { 13 throw new NotImplementedException("插入方法(fa)"); 14 } 15 } 16 class DisplayBase 17 { 18 /// <summary> 19 /// 插(cha)入方(fang)法 20 /// </summary> 21 public virtual void Insert() 22 { 23 throw new NotImplementedException("插入方法"); 24 } 25 } 26 class sub2 : DisplayBase 27 { } 28 #endregion