學習之路二十九 泛型和委託在重構中的運用

2021-09-06 09:04:12 字數 2325 閱讀 3045

最近在對專案中的**進行重構,在重構的過程中發現了一些很有趣的東西,就是泛型和委託!

泛型和委託給我的重構帶來了很大的便利,我也對它們在重構的技術上有了一些新的認識!

如果小菜說的不對,還請園友們幫我指出,我會虛心接受的,謝謝~!

下面我只是說泛型和委託在重構時的一些觀點,不包含泛型和委託的所有知識點!

一丶泛型

重構前**:

1

public

class

test214

}1516public

person1 test1() //很簡單,返回乙個物件例項

1721

22public

person2 test2() //這個也是返回乙個物件例項

2327}28

29public

class

person1

3031

32public

class

person2

33

分析:①首先看到有兩個方法的操作行為都是返回物件例項!

②也就是操作行為是相似的,但是返回的型別是不一樣的!

③找到了相同點之後,我們就要對經常變化的點進行封裝了,也就是我們要封裝型別的變化點!

③最後我們很容易想到用泛型實現這樣的需求!

重構後**:

1

public

class

test214

}1516public t testtwo() where t : class,new

() //通過泛型來封裝型別變化點

1721}22

23public

class

person1

2425

26public

class

person2

27

結論:泛型封裝型別變化點

通過泛型來傳遞型別,規定現在我們應該使用哪一種型別,這樣就可以做到型別封裝,從而做到以不變應萬變!

二丶委託

重構前**:

1

public

class

test212

}1314public

void

test2()

1523}24

25public

void

generateentity1(datarow datarow)

2629

30public

void

generateentity2(datarow datarow)

3134 }

分析:①首先會看到test1和test2方法中在生成entity時會有foreach迴圈的重複**!

②要想提取出兩邊的通用**,需要分析兩邊哪些**是一樣的,哪些是變化的,這樣我們就能提取出不變的**,而用一些技術來封裝變化點,最終做到通用!

③我們很容易發現foreach迴圈的**是一樣的,生成entity是不一樣的,但是在仔細看一下生成entity方法的引數和返回值是一樣的!

④那麼怎麼來封裝那個經常變化的點呢?

⑤我們想到委託,通過委託來傳遞操作行為來做到變化!

重構後**:

1

public

class

test228

9public

void

test2()

1014

15public

void

generateentity1(datarow datarow)

1619

20public

void

generateentity2(datarow datarow)

2124

25private

void generateentity(datatable table, actionaction) //

通過委託來實現操作行為的傳遞

2631

}32 }

結論:委託封裝行為操作變化點

通過傳遞委託例項來指定我需要使用那種操作行為,如果發現返回值不一樣,那麼再加上泛型來封裝型別的變化點,最後就構成了委託和泛型的綜合利用!

三丶總結

其實就是想說在實踐中進行思考,進行總結,最終一定會有不一樣的收穫! 

已同步至:個人文章目錄索引

java學習之路 第二十九天

c.css中的背景 在css中可以使用顏色作用背景顏色,還可以使用作為背景。在使用顏色作為背景的使用注意要使用顏色的16進製表示。如果你的頁面使用顏色作為背景,建議網頁的背景顏色為 aaaaaa ffffff 顏色是越來越淡,一般使用 eeeeee作為背景比較多 使用作為背景 background ...

C 學習筆記 泛型委託Action和Fun

本節學習了泛型委託action和fun兩類特殊的委託,這兩個特殊的委託是dot framewrok自帶的。結合lambda表示式,可以在寫程式時,簡潔 和提高編碼效率。一 action和fun兩個委託的不同點 action只能委託必須是無返回值的方法 fun只是委託必須有返回值的方法 二 演練 us...

C 學習筆記 泛型委託Action和Fun

本節學習了泛型委託action和fun兩類特殊的委託,這兩個特殊的委託是dot framewrok自帶的。結合lambda表示式,可以在寫程式時,簡潔 和提高編碼效率。一 action和fun兩個委託的不同點 action只能委託必須是無返回值的方法 fun只是委託必須有返回值的方法 二 演練 us...