From cc1daa03cf1152a3239de5e49c9024249bc025e0 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 22 Feb 2018 01:51:07 +0800 Subject: [PATCH] auto commit --- notes/MySQL.md | 2 +- notes/计算机æ“�作系统.md | 22 ++--- notes/计算机网络.md | 2 +- notes/é‡�æž„.md | 184 ++++++++++++++++++++-------------------- 4 files changed, 105 insertions(+), 105 deletions(-) diff --git a/notes/MySQL.md b/notes/MySQL.md index f0fe5704..114a7570 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -17,7 +17,7 @@ * [1. Ë÷Òý·ÖÀà](#1-Ë÷Òý·ÖÀà) * [1.1 B-Tree Ë÷Òý](#11-b-tree-Ë÷Òý) * [1.2 ¹þÏ£Ë÷Òý](#12-¹þÏ£Ë÷Òý) - * [1.3. ¿Õ¼äË÷ÒýÊý¾Ý£¨R-Tree£©](#13-¿Õ¼äË÷ÒýÊý¾Ý£¨r-tree£©) + * [1.3. ¿Õ¼äË÷ÒýÊý¾Ý£¨R-Tree£©](#13-¿Õ¼äË÷ÒýÊý¾Ýr-tree) * [1.4 È«ÎÄË÷Òý](#14-È«ÎÄË÷Òý) * [2. Ë÷ÒýµÄÓŵã](#2-Ë÷ÒýµÄÓŵã) * [3. Ë÷ÒýÓÅ»¯](#3-Ë÷ÒýÓÅ»¯) diff --git a/notes/计算机æ“�作系统.md b/notes/计算机æ“�作系统.md index ffaf6390..8656dac4 100644 --- a/notes/计算机æ“�作系统.md +++ b/notes/计算机æ“�作系统.md @@ -21,9 +21,9 @@ * [½ø³Ì״̬µÄÇл»](#½ø³Ì״̬µÄÇл») * [µ÷¶ÈËã·¨](#µ÷¶ÈËã·¨) * [1. Åú´¦ÀíϵͳÖеĵ÷¶È](#1-Åú´¦ÀíϵͳÖеĵ÷¶È) - * [1.1 ÏÈÀ´ÏÈ·þÎñ£¨FCFS£©](#11-ÏÈÀ´ÏÈ·þÎñ£¨fcfs£©) - * [1.2 ¶Ì×÷ÒµÓÅÏÈ£¨SJF£©](#12-¶Ì×÷ÒµÓÅÏÈ£¨sjf£©) - * [1.3 ×î¶ÌÊ£Óàʱ¼äÓÅÏÈ£¨SRTN£©](#13-×î¶ÌÊ£Óàʱ¼äÓÅÏÈ£¨srtn£©) + * [1.1 ÏÈÀ´ÏÈ·þÎñ£¨FCFS£©](#11-ÏÈÀ´ÏÈ·þÎñfcfs) + * [1.2 ¶Ì×÷ÒµÓÅÏÈ£¨SJF£©](#12-¶Ì×÷ÒµÓÅÏÈsjf) + * [1.3 ×î¶ÌÊ£Óàʱ¼äÓÅÏÈ£¨SRTN£©](#13-×î¶ÌÊ£Óàʱ¼äÓÅÏÈsrtn) * [2. ½»»¥Ê½ÏµÍ³Öеĵ÷¶È](#2-½»»¥Ê½ÏµÍ³Öеĵ÷¶È) * [2.1 ÓÅÏÈȨÓÅÏÈ](#21-ÓÅÏÈȨÓÅÏÈ) * [2.2 ʱ¼äƬÂÖת](#22-ʱ¼äƬÂÖת) @@ -69,16 +69,16 @@ * [3. ¶Îҳʽ](#3-¶Îҳʽ) * [4. ·ÖÒ³Óë·Ö¶ÎÇø±ð](#4-·ÖÒ³Óë·Ö¶ÎÇø±ð) * [Ò³ÃæÖû»Ëã·¨](#Ò³ÃæÖû»Ëã·¨) - * [1. ×î¼Ñ£¨Optimal£©](#1-×î¼Ñ£¨optimal£©) - * [2. ÏȽøÏȳö£¨FIFO£©](#2-ÏȽøÏȳö£¨fifo£©) - * [3. ×î½ü×î¾ÃδʹÓã¨LRU£¬Least Recently Used£©](#3-×î½ü×î¾ÃδʹÓã¨lru£¬least-recently-used£©) - * [4. ʱÖÓ£¨Clock£©](#4-ʱÖÓ£¨clock£©) + * [1. ×î¼Ñ£¨Optimal£©](#1-×î¼Ñoptimal) + * [2. ÏȽøÏȳö£¨FIFO£©](#2-ÏȽøÏȳöfifo) + * [3. ×î½ü×î¾ÃδʹÓã¨LRU£¬Least Recently Used£©](#3-×î½ü×î¾ÃδʹÓÃlru£¬least-recently-used) + * [4. ʱÖÓ£¨Clock£©](#4-ʱÖÓclock) * [µÚÎåÕ É豸¹ÜÀí](#µÚÎåÕÂ-É豸¹ÜÀí) * [´ÅÅ̵÷¶ÈËã·¨](#´ÅÅ̵÷¶ÈËã·¨) - * [1. ÏÈÀ´ÏÈ·þÎñ£¨FCFS£¬First Come First Serverd£©](#1-ÏÈÀ´ÏÈ·þÎñ£¨fcfs£¬first-come-first-serverd£©) - * [2. ×î¶ÌѰµÀʱ¼äÓÅÏÈ£¨SSTF£¬Shortest Seek Time First£©](#2-×î¶ÌѰµÀʱ¼äÓÅÏÈ£¨sstf£¬shortest-seek-time-first£©) - * [3. ɨÃèËã·¨£¨SCAN£©](#3-ɨÃèËã·¨£¨scan£©) - * [4. Ñ­»·É¨ÃèËã·¨£¨CSCAN£©](#4-Ñ­»·É¨ÃèËã·¨£¨cscan£©) + * [1. ÏÈÀ´ÏÈ·þÎñ£¨FCFS£¬First Come First Serverd£©](#1-ÏÈÀ´ÏÈ·þÎñfcfs£¬first-come-first-serverd) + * [2. ×î¶ÌѰµÀʱ¼äÓÅÏÈ£¨SSTF£¬Shortest Seek Time First£©](#2-×î¶ÌѰµÀʱ¼äÓÅÏÈsstf£¬shortest-seek-time-first) + * [3. ɨÃèËã·¨£¨SCAN£©](#3-ɨÃèËã·¨scan) + * [4. Ñ­»·É¨ÃèËã·¨£¨CSCAN£©](#4-Ñ­»·É¨ÃèËã·¨cscan) * [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 8085ca6c..b4581956 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -43,7 +43,7 @@ * [IP µØÖ·±àÖ·](#ip-µØÖ·±àÖ·) * [1. ·ÖÀàµÄ IP µØÖ·](#1-·ÖÀàµÄ-ip-µØÖ·) * [2. »®·Ö×ÓÍø](#2-»®·Ö×ÓÍø) - * [3. ÎÞ·ÖÀà±àÖ· CIDR£¨¹¹³É³¬Íø£©](#3-ÎÞ·ÖÀà±àÖ·-cidr£¨¹¹³É³¬Íø£©) + * [3. ÎÞ·ÖÀà±àÖ· CIDR£¨¹¹³É³¬Íø£©](#3-ÎÞ·ÖÀà±àÖ·-cidr¹¹³É³¬Íø) * [IP µØÖ·ºÍ MAC µØÖ·](#ip-µØÖ·ºÍ-mac-µØÖ·) * [µØÖ·½âÎöЭÒé ARP](#µØÖ·½âÎöЭÒé-arp) * [·ÓÉÆ÷µÄ½á¹¹](#·ÓÉÆ÷µÄ½á¹¹) diff --git a/notes/é‡�æž„.md b/notes/é‡�æž„.md index 7ac2b62d..a7d15340 100644 --- a/notes/é‡�æž„.md +++ b/notes/é‡�æž„.md @@ -1,108 +1,108 @@ -* [µÚÒ»ÕÂ ÖØ¹¹£¬µÚÒ»¸ö°¸Àý](#µÚÒ»ÕÂ-ÖØ¹¹£¬µÚÒ»¸ö°¸Àý) +* [µÚÒ»Õ µÚÒ»¸ö°¸Àý](#µÚÒ»ÕÂ-µÚÒ»¸ö°¸Àý) * [µÚ¶þÕÂ ÖØ¹¹Ô­Ôò](#µÚ¶þÕÂ-ÖØ¹¹Ô­Ôò) * [µÚÈýÕ ´úÂëµÄ»µÎ¶µÀ](#µÚÈýÕÂ-´úÂëµÄ»µÎ¶µÀ) - * [1. Duplicated Code£¨Öظ´´úÂ룩](#1-duplicated-code£¨Öظ´´úÂ룩) - * [2. Long Method£¨¹ý³¤º¯Êý£©](#2-long-method£¨¹ý³¤º¯Êý£©) - * [3. Large Class£¨¹ý´óµÄÀࣩ](#3-large-class£¨¹ý´óµÄÀࣩ) - * [4. Long Parameter List£¨¹ý³¤µÄ²ÎÊýÁУ©](#4-long-parameter-list£¨¹ý³¤µÄ²ÎÊýÁУ©) - * [5. Divergent Change£¨·¢É¢Ê½±ä»¯£©](#5-divergent-change£¨·¢É¢Ê½±ä»¯£©) - * [6. Shotgun Surgery£¨É¢µ¯Ê½Ð޸ģ©](#6-shotgun-surgery£¨É¢µ¯Ê½Ð޸ģ©) - * [7. Feature Envy£¨ÒÀÁµÇé½á£©](#7-feature-envy£¨ÒÀÁµÇé½á£©) - * [8. Data Clumps£¨Êý¾ÝÄàÍÅ£©](#8-data-clumps£¨Êý¾ÝÄàÍÅ£©) - * [9. Primitive Obsession£¨»ù±¾ÀàÐÍÆ«Ö´£©](#9-primitive-obsession£¨»ù±¾ÀàÐÍÆ«Ö´£©) - * [10. Switch Statements£¨switch ¾ªã¤ÏÖÉí£©](#10-switch-statements£¨switch-¾ªã¤ÏÖÉí£©) - * [11. Parallel Inheritance Hierarchies£¨Æ½Ðм̳ÐÌåϵ£©](#11-parallel-inheritance-hierarchies£¨Æ½Ðм̳ÐÌåϵ£©) - * [12. Lazy Class£¨ÈßÓàÀࣩ](#12-lazy-class£¨ÈßÓàÀࣩ) - * [13. Speculative Generality£¨¿ä¿äÆä̸δÀ´ÐÔ£©](#13-speculative-generality£¨¿ä¿äÆä̸δÀ´ÐÔ£©) - * [14. Temporary Field£¨ÁîÈËÃÔ»óµÄÔÝʱ×ֶΣ©](#14-temporary-field£¨ÁîÈËÃÔ»óµÄÔÝʱ×ֶΣ©) - * [15. Message Chains£¨¹ý¶ÈñîºÏµÄÏûÏ¢Á´£©](#15-message-chains£¨¹ý¶ÈñîºÏµÄÏûÏ¢Á´£©) - * [16. Middle Man£¨ÖмäÈË£©](#16-middle-man£¨ÖмäÈË£©) - * [17. Inappropriate Intimacy£¨áòêǹØÏµ£©](#17-inappropriate-intimacy£¨áòêǹØÏµ£©) - * [18. Alernative Classes with Different Interfaces£¨ÒìÇúͬ¹¤µÄÀࣩ](#18-alernative-classes-with-different-interfaces£¨ÒìÇúͬ¹¤µÄÀࣩ) - * [19. Incomplete Library Class£¨²»ÍêÃÀµÄÀà¿â£©](#19-incomplete-library-class£¨²»ÍêÃÀµÄÀà¿â£©) - * [20. Data Class£¨Ó×ÖɵÄÊý¾ÝÀࣩ](#20-data-class£¨Ó×ÖɵÄÊý¾ÝÀࣩ) - * [21. Refused Bequest£¨±»¾Ü¾øµÄÀ¡Ôù£©](#21-refused-bequest£¨±»¾Ü¾øµÄÀ¡Ôù£©) - * [22. Comments£¨¹ý¶àµÄ×¢ÊÍ£©](#22-comments£¨¹ý¶àµÄ×¢ÊÍ£©) + * [1. Duplicated Code£¨Öظ´´úÂ룩](#1-duplicated-codeÖØ¸´´úÂë) + * [2. Long Method£¨¹ý³¤º¯Êý£©](#2-long-method¹ý³¤º¯Êý) + * [3. Large Class£¨¹ý´óµÄÀࣩ](#3-large-class¹ý´óµÄÀà) + * [4. Long Parameter List£¨¹ý³¤µÄ²ÎÊýÁУ©](#4-long-parameter-list¹ý³¤µÄ²ÎÊýÁÐ) + * [5. Divergent Change£¨·¢É¢Ê½±ä»¯£©](#5-divergent-change·¢É¢Ê½±ä»¯) + * [6. Shotgun Surgery£¨É¢µ¯Ê½Ð޸ģ©](#6-shotgun-surgeryÉ¢µ¯Ê½ÐÞ¸Ä) + * [7. Feature Envy£¨ÒÀÁµÇé½á£©](#7-feature-envyÒÀÁµÇé½á) + * [8. Data Clumps£¨Êý¾ÝÄàÍÅ£©](#8-data-clumpsÊý¾ÝÄàÍÅ) + * [9. Primitive Obsession£¨»ù±¾ÀàÐÍÆ«Ö´£©](#9-primitive-obsession»ù±¾ÀàÐÍÆ«Ö´) + * [10. Switch Statements£¨switch ¾ªã¤ÏÖÉí£©](#10-switch-statementsswitch-¾ªã¤ÏÖÉí) + * [11. Parallel Inheritance Hierarchies£¨Æ½Ðм̳ÐÌåϵ£©](#11-parallel-inheritance-hierarchiesƽÐм̳ÐÌåϵ) + * [12. Lazy Class£¨ÈßÓàÀࣩ](#12-lazy-classÈßÓàÀà) + * [13. Speculative Generality£¨¿ä¿äÆä̸δÀ´ÐÔ£©](#13-speculative-generality¿ä¿äÆä̸δÀ´ÐÔ) + * [14. Temporary Field£¨ÁîÈËÃÔ»óµÄÔÝʱ×ֶΣ©](#14-temporary-fieldÁîÈËÃÔ»óµÄÔÝʱ×Ö¶Î) + * [15. Message Chains£¨¹ý¶ÈñîºÏµÄÏûÏ¢Á´£©](#15-message-chains¹ý¶ÈñîºÏµÄÏûÏ¢Á´) + * [16. Middle Man£¨ÖмäÈË£©](#16-middle-manÖмäÈË) + * [17. Inappropriate Intimacy£¨áòêǹØÏµ£©](#17-inappropriate-intimacyáòêǹØÏµ) + * [18. Alernative Classes with Different Interfaces£¨ÒìÇúͬ¹¤µÄÀࣩ](#18-alernative-classes-with-different-interfacesÒìÇúͬ¹¤µÄÀà) + * [19. Incomplete Library Class£¨²»ÍêÃÀµÄÀà¿â£©](#19-incomplete-library-class²»ÍêÃÀµÄÀà¿â) + * [20. Data Class£¨Ó×ÖɵÄÊý¾ÝÀࣩ](#20-data-classÓ×ÖɵÄÊý¾ÝÀà) + * [21. Refused Bequest£¨±»¾Ü¾øµÄÀ¡Ôù£©](#21-refused-bequest±»¾Ü¾øµÄÀ¡Ôù) + * [22. Comments£¨¹ý¶àµÄ×¢ÊÍ£©](#22-comments¹ý¶àµÄ×¢ÊÍ) * [µÚËÄÕ ¹¹Öþ²âÊÔÌåϵ](#µÚËÄÕÂ-¹¹Öþ²âÊÔÌåϵ) * [µÚÎåÕÂ ÖØ¹¹Áбí](#µÚÎåÕÂ-ÖØ¹¹Áбí) * [µÚÁùÕÂ ÖØÐÂ×éÖ¯º¯Êý](#µÚÁùÕÂ-ÖØÐÂ×éÖ¯º¯Êý) - * [1. Extract Method£¨ÌáÁ¶º¯Êý£©](#1-extract-method£¨ÌáÁ¶º¯Êý£©) - * [2. Inline Method£¨ÄÚÁªº¯Êý£©](#2-inline-method£¨ÄÚÁªº¯Êý£©) - * [3. Inline Temp£¨ÄÚÁªÁÙʱ±äÁ¿£©](#3-inline-temp£¨ÄÚÁªÁÙʱ±äÁ¿£©) - * [4. Replace Temp with Query£¨ÒÔ²éѯȡ´úÁÙʱ±äÁ¿£©](#4-replace-temp-with-query£¨ÒÔ²éѯȡ´úÁÙʱ±äÁ¿£©) - * [5. Introduce Explaining Variable£¨ÒýÆð½âÊͱäÁ¿£©](#5-introduce-explaining-variable£¨ÒýÆð½âÊͱäÁ¿£©) - * [6. Split Temporary Variable£¨·Ö½âÁÙʱ±äÁ¿£©](#6-split-temporary-variable£¨·Ö½âÁÙʱ±äÁ¿£©) - * [7. Remove Assigments to Parameters£¨ÒƳý¶Ô²ÎÊýµÄ¸³Öµ£©](#7-remove-assigments-to-parameters£¨ÒƳý¶Ô²ÎÊýµÄ¸³Öµ£©) - * [8. Replace Method with Method Object£¨ÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý£©](#8-replace-method-with-method-object£¨ÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý£©) - * [9. Subsititute Algorithn£¨Ìæ»»Ëã·¨£©](#9-subsititute-algorithn£¨Ìæ»»Ëã·¨£©) + * [1. Extract Method£¨ÌáÁ¶º¯Êý£©](#1-extract-methodÌáÁ¶º¯Êý) + * [2. Inline Method£¨ÄÚÁªº¯Êý£©](#2-inline-methodÄÚÁªº¯Êý) + * [3. Inline Temp£¨ÄÚÁªÁÙʱ±äÁ¿£©](#3-inline-tempÄÚÁªÁÙʱ±äÁ¿) + * [4. Replace Temp with Query£¨ÒÔ²éѯȡ´úÁÙʱ±äÁ¿£©](#4-replace-temp-with-queryÒÔ²éѯȡ´úÁÙʱ±äÁ¿) + * [5. Introduce Explaining Variable£¨ÒýÆð½âÊͱäÁ¿£©](#5-introduce-explaining-variableÒýÆð½âÊͱäÁ¿) + * [6. Split Temporary Variable£¨·Ö½âÁÙʱ±äÁ¿£©](#6-split-temporary-variable·Ö½âÁÙʱ±äÁ¿) + * [7. Remove Assigments to Parameters£¨ÒƳý¶Ô²ÎÊýµÄ¸³Öµ£©](#7-remove-assigments-to-parametersÒÆ³ý¶Ô²ÎÊýµÄ¸³Öµ) + * [8. Replace Method with Method Object£¨ÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý£©](#8-replace-method-with-method-objectÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý) + * [9. Subsititute Algorithn£¨Ìæ»»Ëã·¨£©](#9-subsititute-algorithnÌæ»»Ëã·¨) * [µÚÆßÕ ÔÚ¶ÔÏóÖ®¼ä°áÒÆÌØÐÔ](#µÚÆßÕÂ-ÔÚ¶ÔÏóÖ®¼ä°áÒÆÌØÐÔ) - * [1. Move Method£¨°áÒÆº¯Êý£©](#1-move-method£¨°áÒÆº¯Êý£©) - * [2. Move Field£¨°áÒÆ×ֶΣ©](#2-move-field£¨°áÒÆ×ֶΣ©) - * [3. Extract Class£¨ÌáÁ¶Àࣩ](#3-extract-class£¨ÌáÁ¶Àࣩ) - * [4. Inline Class£¨½«ÀàÄÚÁª»¯£©](#4-inline-class£¨½«ÀàÄÚÁª»¯£©) - * [5. Hide Delegate£¨Òþ²Ø¡°Î¯ÍйØÏµ¡±£©](#5-hide-delegate£¨Òþ²Ø¡°Î¯ÍйØÏµ¡±£©) - * [6. Remove Middle Man£¨ÒƳýÖмäÈË£©](#6-remove-middle-man£¨ÒƳýÖмäÈË£©) - * [7. Introduce Foreign Method£¨ÒýÈëÍâ¼Óº¯Êý£©](#7-introduce-foreign-method£¨ÒýÈëÍâ¼Óº¯Êý£©) - * [8. Introduce Local Extension£¨ÒýÈë±¾µØÀ©Õ¹£©](#8-introduce-local-extension£¨ÒýÈë±¾µØÀ©Õ¹£©) + * [1. Move Method£¨°áÒÆº¯Êý£©](#1-move-method°áÒÆº¯Êý) + * [2. Move Field£¨°áÒÆ×ֶΣ©](#2-move-field°áÒÆ×Ö¶Î) + * [3. Extract Class£¨ÌáÁ¶Àࣩ](#3-extract-classÌáÁ¶Àà) + * [4. Inline Class£¨½«ÀàÄÚÁª»¯£©](#4-inline-class½«ÀàÄÚÁª»¯) + * [5. Hide Delegate£¨Òþ²Ø¡°Î¯ÍйØÏµ¡±£©](#5-hide-delegateÒþ²Ø¡°Î¯ÍйØÏµ¡±) + * [6. Remove Middle Man£¨ÒƳýÖмäÈË£©](#6-remove-middle-manÒÆ³ýÖмäÈË) + * [7. Introduce Foreign Method£¨ÒýÈëÍâ¼Óº¯Êý£©](#7-introduce-foreign-methodÒýÈëÍâ¼Óº¯Êý) + * [8. Introduce Local Extension£¨ÒýÈë±¾µØÀ©Õ¹£©](#8-introduce-local-extensionÒýÈë±¾µØÀ©Õ¹) * [µÚ°ËÕÂ ÖØÐÂ×éÖ¯Êý¾Ý](#µÚ°ËÕÂ-ÖØÐÂ×éÖ¯Êý¾Ý) - * [1. Self Encapsulate Field£¨×Ô·â×°×ֶΣ©](#1-self-encapsulate-field£¨×Ô·â×°×ֶΣ©) - * [2. Replace Data Value with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ£©](#2-replace-data-value-with-object£¨ÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ£©) - * [3. Change Value to Reference£¨½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó£©](#3-change-value-to-reference£¨½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó£©) - * [4. Change Reference to value£¨½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó£©](#4-change-reference-to-value£¨½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó£©) - * [5. Replace Array with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý×飩](#5-replace-array-with-object£¨ÒÔ¶ÔÏóÈ¡´úÊý×飩) - * [6. Duplicate Observed Data£¨¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±£©](#6-duplicate-observed-data£¨¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±£©) - * [7. Change Unidirectional Association to Bidirectional£¨½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª£©](#7-change-unidirectional-association-to-bidirectional£¨½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª£©) - * [8. Change Bidirectional Association to Unidirectional£¨½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª£©](#8-change-bidirectional-association-to-unidirectional£¨½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª£©) - * [9. Replace Magic Number with Symbolic Constant£¨ÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý£©](#9-replace-magic-number-with-symbolic-constant£¨ÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý£©) - * [10. Encapsulate Field£¨·â×°×ֶΣ©](#10-encapsulate-field£¨·â×°×ֶΣ©) - * [11. Encapsulate Collection£¨·â×°¼¯ºÏ£©](#11-encapsulate-collection£¨·â×°¼¯ºÏ£©) - * [12. Replace Record with Data Class£¨ÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼£©](#12-replace-record-with-data-class£¨ÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼£©) - * [13. Replace Type Code with Class£¨ÒÔÀàÈ¡´úÀàÐÍÂ룩](#13-replace-type-code-with-class£¨ÒÔÀàÈ¡´úÀàÐÍÂ룩) - * [14. Replace Type Code with Subcalsses£¨ÒÔ×ÓÀàÈ¡´úÀàÐÍÂ룩](#14-replace-type-code-with-subcalsses£¨ÒÔ×ÓÀàÈ¡´úÀàÐÍÂ룩) - * [15. Replace Type Code with State/Strategy £¨ÒÔ State/Strategy È¡´úÀàÐÍÂ룩](#15-replace-type-code-with-statestrategy-£¨ÒÔ-statestrategy-È¡´úÀàÐÍÂ룩) - * [16. Replace Subclass with Fields£¨ÒÔ×Ö¶ÎÈ¡´ú×ÓÀࣩ](#16-replace-subclass-with-fields£¨ÒÔ×Ö¶ÎÈ¡´ú×ÓÀࣩ) + * [1. Self Encapsulate Field£¨×Ô·â×°×ֶΣ©](#1-self-encapsulate-field×Ô·â×°×Ö¶Î) + * [2. Replace Data Value with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ£©](#2-replace-data-value-with-objectÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ) + * [3. Change Value to Reference£¨½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó£©](#3-change-value-to-reference½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó) + * [4. Change Reference to value£¨½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó£©](#4-change-reference-to-value½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó) + * [5. Replace Array with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý×飩](#5-replace-array-with-objectÒÔ¶ÔÏóÈ¡´úÊý×é) + * [6. Duplicate Observed Data£¨¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±£©](#6-duplicate-observed-data¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±) + * [7. Change Unidirectional Association to Bidirectional£¨½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª£©](#7-change-unidirectional-association-to-bidirectional½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª) + * [8. Change Bidirectional Association to Unidirectional£¨½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª£©](#8-change-bidirectional-association-to-unidirectional½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª) + * [9. Replace Magic Number with Symbolic Constant£¨ÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý£©](#9-replace-magic-number-with-symbolic-constantÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý) + * [10. Encapsulate Field£¨·â×°×ֶΣ©](#10-encapsulate-field·â×°×Ö¶Î) + * [11. Encapsulate Collection£¨·â×°¼¯ºÏ£©](#11-encapsulate-collection·â×°¼¯ºÏ) + * [12. Replace Record with Data Class£¨ÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼£©](#12-replace-record-with-data-classÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼) + * [13. Replace Type Code with Class£¨ÒÔÀàÈ¡´úÀàÐÍÂ룩](#13-replace-type-code-with-classÒÔÀàÈ¡´úÀàÐÍÂë) + * [14. Replace Type Code with Subcalsses£¨ÒÔ×ÓÀàÈ¡´úÀàÐÍÂ룩](#14-replace-type-code-with-subcalssesÒÔ×ÓÀàÈ¡´úÀàÐÍÂë) + * [15. Replace Type Code with State/Strategy £¨ÒÔ State/Strategy È¡´úÀàÐÍÂ룩](#15-replace-type-code-with-statestrategy-ÒÔ-statestrategy-È¡´úÀàÐÍÂë) + * [16. Replace Subclass with Fields£¨ÒÔ×Ö¶ÎÈ¡´ú×ÓÀࣩ](#16-replace-subclass-with-fieldsÒÔ×Ö¶ÎÈ¡´ú×ÓÀà) * [µÚ¾ÅÕ ¼ò»¯Ìõ¼þ±í´ïʽ](#µÚ¾ÅÕÂ-¼ò»¯Ìõ¼þ±í´ïʽ) - * [1. Decompose Conditional£¨·Ö½âÌõ¼þ±í´ïʽ£©](#1-decompose-conditional£¨·Ö½âÌõ¼þ±í´ïʽ£©) - * [2. Consolidate Conditional Expression£¨ºÏ²¢Ìõ¼þ±í´ïʽ£©](#2-consolidate-conditional-expression£¨ºÏ²¢Ìõ¼þ±í´ïʽ£©) - * [3. Consolidate Duplicate Conditional Fragments £¨ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î£©](#3-consolidate-duplicate-conditional-fragments-£¨ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î£©) - * [4. Remove Control Flag£¨ÒƳý¿ØÖƱê¼Ç£©](#4-remove-control-flag£¨ÒƳý¿ØÖƱê¼Ç£©) - * [5. Replace Nested Conditional with Guard Clauses £¨ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ£©](#5-replace-nested-conditional-with-guard-clauses-£¨ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ£©) - * [6. Replace Conditional with Polymorphism £¨ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ£©](#6-replace-conditional-with-polymorphism-£¨ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ£©) - * [7. Introduce Null Object£¨ÒýÈëNull¶ÔÏó£©](#7-introduce-null-object£¨ÒýÈënull¶ÔÏó£©) - * [8. Introduce Assertion£¨ÒýÈë¶ÏÑÔ£©](#8-introduce-assertion£¨ÒýÈë¶ÏÑÔ£©) + * [1. Decompose Conditional£¨·Ö½âÌõ¼þ±í´ïʽ£©](#1-decompose-conditional·Ö½âÌõ¼þ±í´ïʽ) + * [2. Consolidate Conditional Expression£¨ºÏ²¢Ìõ¼þ±í´ïʽ£©](#2-consolidate-conditional-expressionºÏ²¢Ìõ¼þ±í´ïʽ) + * [3. Consolidate Duplicate Conditional Fragments £¨ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î£©](#3-consolidate-duplicate-conditional-fragments-ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î) + * [4. Remove Control Flag£¨ÒƳý¿ØÖƱê¼Ç£©](#4-remove-control-flagÒÆ³ý¿ØÖƱê¼Ç) + * [5. Replace Nested Conditional with Guard Clauses £¨ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ£©](#5-replace-nested-conditional-with-guard-clauses-ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ) + * [6. Replace Conditional with Polymorphism £¨ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ£©](#6-replace-conditional-with-polymorphism-ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ) + * [7. Introduce Null Object£¨ÒýÈëNull¶ÔÏó£©](#7-introduce-null-objectÒýÈënull¶ÔÏó) + * [8. Introduce Assertion£¨ÒýÈë¶ÏÑÔ£©](#8-introduce-assertionÒýÈë¶ÏÑÔ) * [µÚʮՠ¼ò»¯º¯Êýµ÷ÓÃ](#µÚÊ®ÕÂ-¼ò»¯º¯Êýµ÷ÓÃ) - * [1. Rename Method£¨º¯Êý¸ÄÃû£©](#1-rename-method£¨º¯Êý¸ÄÃû£©) - * [2. Add Parameter£¨Ìí¼Ó²ÎÊý£©](#2-add-parameter£¨Ìí¼Ó²ÎÊý£©) - * [3. Remove Parameter£¨ÒƳý²ÎÊý£©](#3-remove-parameter£¨ÒƳý²ÎÊý£©) - * [4. Separate Query from Modifier£¨½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀ룩](#4-separate-query-from-modifier£¨½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀ룩) - * [5. Parameterize Method£¨ÁÊýЯ´ø²ÎÊý£©](#5-parameterize-method£¨ÁÊýЯ´ø²ÎÊý£©) - * [6. Replace Parameter with Explicit Methods£¨ÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý£©](#6-replace-parameter-with-explicit-methods£¨ÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý£©) - * [7. Preserve Whole Object£¨±£³Ö¶ÔÏóÍêÕû£©](#7-preserve-whole-object£¨±£³Ö¶ÔÏóÍêÕû£©) - * [8. Replace Parameter with Methods£¨ÒÔº¯ÊýÈ¡´ú²ÎÊý£©](#8-replace-parameter-with-methods£¨ÒÔº¯ÊýÈ¡´ú²ÎÊý£©) - * [9. Introduce Parameter Object£¨ÒýÈë²ÎÊý¶ÔÏó£©](#9-introduce-parameter-object£¨ÒýÈë²ÎÊý¶ÔÏó£©) - * [10. Remove Setting Method£¨ÒƳýÉèÖµº¯Êý£©](#10-remove-setting-method£¨ÒƳýÉèÖµº¯Êý£©) - * [11. Hide Method£¨Òþ²Øº¯Êý£©](#11-hide-method£¨Òþ²Øº¯Êý£©) - * [12. Replace Constructor with Factory Method £¨ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý£©](#12-replace-constructor-with-factory-method-£¨ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý£©) - * [13. Encapsulate Downcast£¨·â×°ÏòÏÂתÐÍ£©](#13-encapsulate-downcast£¨·â×°ÏòÏÂתÐÍ£©) - * [14. Replace Error Code with Exception £¨ÒÔÒ쳣ȡ´ú´íÎóÂ룩](#14-replace-error-code-with-exception-£¨ÒÔÒ쳣ȡ´ú´íÎóÂ룩) - * [15. Replace Exception with Test£¨ÒÔ²âÊÔÈ¡´úÒì³££©](#15-replace-exception-with-test£¨ÒÔ²âÊÔÈ¡´úÒì³££©) + * [1. Rename Method£¨º¯Êý¸ÄÃû£©](#1-rename-methodº¯Êý¸ÄÃû) + * [2. Add Parameter£¨Ìí¼Ó²ÎÊý£©](#2-add-parameterÌí¼Ó²ÎÊý) + * [3. Remove Parameter£¨ÒƳý²ÎÊý£©](#3-remove-parameterÒÆ³ý²ÎÊý) + * [4. Separate Query from Modifier£¨½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀ룩](#4-separate-query-from-modifier½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀë) + * [5. Parameterize Method£¨ÁÊýЯ´ø²ÎÊý£©](#5-parameterize-methodÁÊýЯ´ø²ÎÊý) + * [6. Replace Parameter with Explicit Methods£¨ÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý£©](#6-replace-parameter-with-explicit-methodsÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý) + * [7. Preserve Whole Object£¨±£³Ö¶ÔÏóÍêÕû£©](#7-preserve-whole-object±£³Ö¶ÔÏóÍêÕû) + * [8. Replace Parameter with Methods£¨ÒÔº¯ÊýÈ¡´ú²ÎÊý£©](#8-replace-parameter-with-methodsÒÔº¯ÊýÈ¡´ú²ÎÊý) + * [9. Introduce Parameter Object£¨ÒýÈë²ÎÊý¶ÔÏó£©](#9-introduce-parameter-objectÒýÈë²ÎÊý¶ÔÏó) + * [10. Remove Setting Method£¨ÒƳýÉèÖµº¯Êý£©](#10-remove-setting-methodÒÆ³ýÉèÖµº¯Êý) + * [11. Hide Method£¨Òþ²Øº¯Êý£©](#11-hide-methodÒþ²Øº¯Êý) + * [12. Replace Constructor with Factory Method £¨ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý£©](#12-replace-constructor-with-factory-method-ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý) + * [13. Encapsulate Downcast£¨·â×°ÏòÏÂתÐÍ£©](#13-encapsulate-downcast·â×°ÏòÏÂתÐÍ) + * [14. Replace Error Code with Exception £¨ÒÔÒ쳣ȡ´ú´íÎóÂ룩](#14-replace-error-code-with-exception-ÒÔÒ쳣ȡ´ú´íÎóÂë) + * [15. Replace Exception with Test£¨ÒÔ²âÊÔÈ¡´úÒì³££©](#15-replace-exception-with-testÒÔ²âÊÔÈ¡´úÒì³£) * [µÚʮһÕ ´¦Àí¸ÅÀ¨¹ØÏµ](#µÚʮһÕÂ-´¦Àí¸ÅÀ¨¹ØÏµ) - * [1. Pull Up Field£¨×Ö¶ÎÉÏÒÆ£©](#1-pull-up-field£¨×Ö¶ÎÉÏÒÆ£©) - * [2. Pull Up Method£¨º¯ÊýÉÏÒÆ£©](#2-pull-up-method£¨º¯ÊýÉÏÒÆ£©) - * [3. Pull Up Constructor Body£¨¹¹Ô캯Êý±¾ÌåÉÏÒÆ£©](#3-pull-up-constructor-body£¨¹¹Ô캯Êý±¾ÌåÉÏÒÆ£©) - * [4. Push Down Method£¨º¯ÊýÏÂÒÆ£©](#4-push-down-method£¨º¯ÊýÏÂÒÆ£©) - * [5. Push Down Field£¨×Ö¶ÎÏÂÒÆ£©](#5-push-down-field£¨×Ö¶ÎÏÂÒÆ£©) - * [6. Extract Subclass£¨ÌáÁ¶×ÓÀࣩ](#6-extract-subclass£¨ÌáÁ¶×ÓÀࣩ) - * [7. Extract Superclass£¨ÌáÁ¶³¬Àࣩ](#7-extract-superclass£¨ÌáÁ¶³¬Àࣩ) - * [8. Extract Interface£¨ÌáÁ¶½Ó¿Ú£©](#8-extract-interface£¨ÌáÁ¶½Ó¿Ú£©) - * [9. Collapse Hierarchy£¨ÕÛµþ¼Ì³ÐÌåϵ£©](#9-collapse-hierarchy£¨ÕÛµþ¼Ì³ÐÌåϵ£©) - * [10. Form Template Method£¨ËÜÔìÄ£°åº¯Êý£©](#10-form-template-method£¨ËÜÔìÄ£°åº¯Êý£©) - * [11. Replace Inheritance with Delegation £¨ÒÔίÍÐÈ¡´ú¼Ì³Ð£©](#11-replace-inheritance-with-delegation-£¨ÒÔίÍÐÈ¡´ú¼Ì³Ð£©) - * [12. Replace Delegation with Inheritance £¨ÒԼ̳ÐÈ¡´úίÍУ©](#12-replace-delegation-with-inheritance-£¨ÒԼ̳ÐÈ¡´úίÍУ©) + * [1. Pull Up Field£¨×Ö¶ÎÉÏÒÆ£©](#1-pull-up-field×Ö¶ÎÉÏÒÆ) + * [2. Pull Up Method£¨º¯ÊýÉÏÒÆ£©](#2-pull-up-methodº¯ÊýÉÏÒÆ) + * [3. Pull Up Constructor Body£¨¹¹Ô캯Êý±¾ÌåÉÏÒÆ£©](#3-pull-up-constructor-body¹¹Ô캯Êý±¾ÌåÉÏÒÆ) + * [4. Push Down Method£¨º¯ÊýÏÂÒÆ£©](#4-push-down-methodº¯ÊýÏÂÒÆ) + * [5. Push Down Field£¨×Ö¶ÎÏÂÒÆ£©](#5-push-down-field×Ö¶ÎÏÂÒÆ) + * [6. Extract Subclass£¨ÌáÁ¶×ÓÀࣩ](#6-extract-subclassÌáÁ¶×ÓÀà) + * [7. Extract Superclass£¨ÌáÁ¶³¬Àࣩ](#7-extract-superclassÌáÁ¶³¬Àà) + * [8. Extract Interface£¨ÌáÁ¶½Ó¿Ú£©](#8-extract-interfaceÌáÁ¶½Ó¿Ú) + * [9. Collapse Hierarchy£¨ÕÛµþ¼Ì³ÐÌåϵ£©](#9-collapse-hierarchyÕÛµþ¼Ì³ÐÌåϵ) + * [10. Form Template Method£¨ËÜÔìÄ£°åº¯Êý£©](#10-form-template-methodËÜÔìÄ£°åº¯Êý) + * [11. Replace Inheritance with Delegation £¨ÒÔίÍÐÈ¡´ú¼Ì³Ð£©](#11-replace-inheritance-with-delegation-ÒÔίÍÐÈ¡´ú¼Ì³Ð) + * [12. Replace Delegation with Inheritance £¨ÒԼ̳ÐÈ¡´úίÍУ©](#12-replace-delegation-with-inheritance-ÒԼ̳ÐÈ¡´úίÍÐ) -# µÚÒ»ÕÂ ÖØ¹¹£¬µÚÒ»¸ö°¸Àý +# µÚÒ»Õ µÚÒ»¸ö°¸Àý Èç¹ûÄã·¢ÏÖ×Ô¼ºÐèҪΪ³ÌÐòÌí¼ÓÒ»¸öÌØÐÔ£¬¶ø´úÂë½á¹¹Ê¹ÄãÎÞ·¨ºÜ·½±ãµØ´ï³ÉÄ¿µÄ£¬ÄǾÍÏÈÖØ¹¹Õâ¸ö³ÌÐò¡£