Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記
Time of Update: 2018-12-07
有些函數,在各個子類中產生完全相同的結果。將該函數移至超類。動機:避免重複行為是很重要的。儘管重複的2個函數也可以各自工作的很好,但重複自身只會成為錯誤的滋生地,此外別無價值。無論何時,只要系統內出現重複,你就面臨“修改其中一個卻未能修改另一個”的風險。通常,找出重複也有一定困難。 如果某個函數在各子類中的函數體相同,這就是做顯而易見的Pull Up Method
Time of Update: 2018-12-07
你有一個函數,其中完全取決於參數值而採取不同香味。針對該參數的每個可能值,建立一個獨立函數。動機:Replace Parameter with Explicit Methods (以明確函數取代參數)恰恰相反於Parameterize Method
Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記
Time of Update: 2018-12-07
一直知道ArrayList效能不太好,今天就來試了一下, 貼下來以後使用時做個參考.請看下面的代碼:代碼Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記
Time of Update: 2018-12-07
對象調用某個函數,並將所得結果作為參數,傳遞給另一個函數。而接受該參數的函數本身也能夠調用前一個函數。讓參數接受者去除該項參數,並直接調用前一個函數。動機:如果函數可以通過其他途徑獲得參數值,那麼它就不應該通過參數取得該值。過長的參數列會增加程式閱讀者的理解難度,因此應該儘可能縮短參數列的長度。
Time of Update: 2018-12-07
對重複要執行的語句,使用這個方法可以提高執行效率。使用這個方法時候必須聲名Parameters的三個參數,否則會產生異常。且看下面代碼: 代碼Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
有一個函數返回一個集合。讓這個函數返回該集合的一個唯讀副本,並在這個類中提供添加/移除集合元素的函數。動機:我們常常會在一個類中使用集合來儲存一組執行個體。這樣的類通常也會提供針對該集合的取值/設值函數。
Time of Update: 2018-12-07
ArrayList是在System.Collections命名空間的一個類, 通過Add的方法添加一個項, 當進到這個類的中繼資料時, 可以看到這個方法的參數是一個object public virtual int Add(object value)所以在添加一個項時需要進行一次裝箱的操作, 讀取一個資料時需要一個拆箱的操作, 所以用ArrayList必然影響效能, 特別是項較多的時候進行讀寫, 至少要進行一次的裝箱一次拆箱,
Time of Update: 2018-12-07
你在各個子類中擁有一些建構函式,它們的本體幾乎完全一致。在超類中建立一個建構函式,並在子類建構函式中調用它。動機:建構函式是很奇妙的東西。它們不是普通函數,使用它們比使用普通函數受到更多的限制。
Time of Update: 2018-12-07
函數中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機:條件運算式通常有2種表現形式。第一:所有分支都屬於正常行為。第二:條件運算式提供的答案中只有一種是正常行為,其他都是不常見的情況。 這2類條件運算式有不同的用途。如果2條分支都是正常行為,就應該使用形如if…..else…..的條件運算式;如果某個條件極其罕見,就應該單獨檢查該條件,並在該條件為真時立刻從函數中返回。這樣的單獨檢查常常被稱為“衛語句”。 Replace Nested
Time of Update: 2018-12-07
2個子類擁有相同的欄位。將該欄位移至超類。動機:如果各子類是分別開發的,或者是在重構過程中組合起來的,你常會發現它們擁有重複特性,特別是欄位更容易重複。這樣的欄位有時擁有相似的名字,但也並非絕對如此。判斷若干欄位是否重複,唯一的辦法就是觀察函數如何使用它們。如果它們被使用的方式很相似,你就可以將它們歸納到超類去。做法:1、針對待提升欄位,檢查它們的所有被使用點,確認它們以同樣的方式被使用。 2、如果這些欄位的名稱不同,先將它們改名,使每一個名稱都和你想為超類欄位取的名稱相同。
Time of Update: 2018-12-07
你直接存取一個欄位,但與欄位之間的耦合關係逐漸層得笨拙。為這個欄位建立取值/設值函數,並且只以這些函數來訪問欄位。 間接訪問變數的好處是,子類可以通過覆寫一個函數而改變擷取資料的途徑;它還支援更靈活的資料管理方式,例如延遲初始化。 如果你想訪問超類中的一個欄位,卻又想子類中將對這個變數的訪問改為一個計算後的值,這就是使用Self Encapsulate Field
Time of Update: 2018-12-07
你的類中存在一個public欄位。將它聲明為private,並且提供相應的訪問函數。動機:物件導向的首要原則之一就是封裝,或者稱為“資料隱藏”。按此原則,你絕不應該將資料聲明為public,否則其他對象就有可能訪問甚至修改這項資料,而擁有該資料的對象卻毫無察覺。於是,資料和行為就被分開了。
Time of Update: 2018-12-07
如果你的某個抽象類別其實沒有太大作用,請運用 Collapse Hierarch (摺疊繼承體系)。不必要的委託可運用 Inline Class (將類內聯化)除掉。如果函數的某些參數未被用上,可對它實施 Remove Parameter (移除參數)。如果函數名稱帶有多餘的抽象意味,應該對它實施Rename Method (函數改名) 如果函數或類的唯一使用者是測試案例,這就飄出了壞味道 夸夸其談未來性(Speculative Generality)。
Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記
Time of Update: 2018-12-07
在一系列布林運算式中,某個變數帶有“控制標記’的作用。以break或return語句取代控制標記。動機:在一系列條件運算式中,常常會看到用以判斷何時停止條件檢查的控制標記。這樣的標記帶來的麻煩超過了它所帶來的便利。人們之所以會使用這樣的控制標記,因為結構化編程原則告訴他們:每個子程式只能有一個入口和出口。“單一出口“原則會讓你在代碼中加入讓人討厭的控制標記,大大降低條件運算式的可讀性。這就是程式設計語言提供break和continue語句的原因:用它們跳出複雜的條件陳述式。去掉控制標記所產生的
Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記
Time of Update: 2018-12-07
[導讀][設計模式整理筆記 一] 基礎知識[設計模式整理筆記 二] 簡單原廠模式(Simple Factory)[設計模式整理筆記 三] 原廠模式(Factory)[設計模式整理筆記 四] 抽象原廠模式(Abstract Factory)[設計模式整理筆記 五] 建立者模式(Builder)[設計模式整理筆記 六] 原廠模式與建立者模式總結[設計模式整理筆記 七] 原型模式(ProtoType)[設計模式整理筆記 八] 單例模式(Singleton)[設計模式整理筆記