1import{_ as s}from"./plugin-vue_export-helper-DlAUqK2U.js";import{c as i,o as a,b as n}from"./app-CNaTWw66.js";const l={},h=n(`<h1 id="æ¨¡æ¿æ¹æ³æ¨¡å¼" tabindex="-1"><a class="header-anchor" href="#æ¨¡æ¿æ¹æ³æ¨¡å¼"><span>æ¨¡æ¿æ¹æ³æ¨¡å¼</span></a></h1><h2 id="æ ¸å¿ææ³" tabindex="-1"><a class="header-anchor" href="#æ ¸å¿ææ³"><span>æ ¸å¿ææ³</span></a></h2><p>æ¨¡æ¿æ¹æ³æ¨¡å¼å 许å¨åºç±»ä¸å®ä¹ä¸ä¸ªç®æ³æ¡æ¶ï¼å¹¶å°ä¸äºæ¥éª¤çå ·ä½å®ç°å»¶è¿å°åç±»ä¸ã</p><h2 id="å ¸åç¨ä¾" tabindex="-1"><a class="header-anchor" href="#å ¸åç¨ä¾"><span>å ¸åç¨ä¾</span></a></h2><h3 id="æ°æ®å¤ç" tabindex="-1"><a class="header-anchor" href="#æ°æ®å¤ç"><span>æ°æ®å¤ç</span></a></h3><p>å¨å¤çæ°æ®çåºç¨ä¸ï¼é常æä¸ä¸ªåºå®çæµç¨ï¼å¦è¯»åãè§£æãå¤çãè¾åºæ°æ®ï¼ï¼ä½æ¯æ¯ä¸ªæ¥éª¤çå ·ä½å®ç°å¯è½æ ¹æ®æ°æ®çä¸åæ ¼å¼èååãæ¨¡æ¿æ¹æ³å¯ä»¥å®ä¹å¤çæµç¨ç骨æ¶ï¼èå ·ä½æ¥éª¤çå®ç°åçç»åç±»ã</p><p>å¨è¿ä¸ªä¾åä¸ï¼æ½è±¡çæ°æ®å¤çåºç±»å®ä¹äºæ°æ®å¤çæµç¨ï¼ä¸åçåç±»å®ç°äºå ·ä½çæ°æ®å¤çæ¥éª¤ãå æ¤ï¼å½éè¦æ·»å æ°çæ°æ®æ ¼å¼æ¯ææ¶ï¼åªéè¦æ·»å ä¸ä¸ªæ°çå类并å®ç°å ·ä½çæ¥éª¤å³å¯ï¼èæ éä¿®æ¹ç°æä»£ç ã</p><div class="language-ts line-numbers-mode" data-highlighter="shiki" data-ext="ts" data-title="ts" style="--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34;"><pre class="shiki shiki-themes github-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// npm run code src/code/design-pattern/template-method/data-processing.ts</span></span> 2<span class="line"></span> 3<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {};</span></span> 4<span class="line"></span> 5<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// å建ä¸ä¸ªæ½è±¡ç±»ï¼å®ä¹æ°æ®å¤ççæ¨¡æ¿æ¹æ³ï¼å¹¶å£°æå¨æ¨¡æ¿æ¹æ³ä¸ä½¿ç¨çæ½è±¡æ¥éª¤</span></span> 6<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">abstract</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> DataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 7<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // æ¨¡æ¿æ¹æ³</span></span> 8<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> processData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 9<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> data</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">readData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 10<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> parsedData</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">parseData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 11<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> processedData</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">processDataStep</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">parsedData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 12<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">outputData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">processedData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 13<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 14<span class="line"></span> 15<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å£°ææ½è±¡æ¥éª¤</span></span> 16<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> readData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 17<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> parseData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 18<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> processDataStep</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 19<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> outputData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 20<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 21<span class="line"></span> 22<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 为ä¸åæ°æ®æ ¼å¼åå»ºå ·ä½çåç±»ï¼å®ç°æ½è±¡æ¥éª¤</span></span> 23<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;">
23 JSONDataProcessor</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> DataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 24<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> readData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 25<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // 读å JSON æ°æ®</span></span> 26<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;"> '{"name": "John", "age": 30}'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 27<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 28<span class="line"></span> 29<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> parseData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 30<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è§£æ JSON æ°æ®</span></span> 31<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> JSON</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">parse</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 32<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 33<span class="line"></span> 34<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> processDataStep</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 35<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å¤çæ°æ®</span></span> 36<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">processed</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#D19A66;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 37<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 38<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 39<span class="line"></span> 40<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> outputData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 41<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¾åºæ°æ®</span></span> 42<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'JSON Data:'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 43<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 44<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 45<span class="line"></span> 46<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> XMLDataProcessor</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> DataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 47<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> readData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 48<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // 读å XML æ°æ®</span></span> 49<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;"> '<user><name>John</name><age>30</age></user>'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 50<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 51<span class="line"></span> 52<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> parseData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 53<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è§£æ XML æ°æ®</span></span> 54<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°çç¥...</span></span> 55<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'John'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">age</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#D19A66;">30</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }; </span><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 示ä¾è¿åå¼</span></span> 56<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 57<span class="line"></span> 58<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> processDataStep</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 59<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å¤çæ°æ®</span></span> 60<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">processed</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#D19A66;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 61<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 62<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 63<span class="line"></span> 64<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> outputData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">data</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> any</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 65<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¾åºæ°æ®</span></span> 66<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'XML Data:'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E06C75;">data</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 67<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 68<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 69<span class="line"></span> 70<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> jsonDataProcessor</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">
70 JSONDataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 71<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">jsonDataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">processData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(); </span><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// å°æç § JSON æ°æ®å¤çæµç¨æ§è¡</span></span> 72<span class="line"></span> 73<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> xmlDataProcessor</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> XMLDataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 74<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">xmlDataProcessor</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">processData</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(); </span><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// å°æç § XML æ°æ®å¤çæµç¨æ§è¡</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="软件æå»ºåæµè¯æµç¨" tabindex="-1"><a class="header-anchor" href="#软件æå»ºåæµè¯æµç¨"><span>软件æå»ºåæµè¯æµç¨</span></a></h3><p>å¨èªå¨åæå»ºåæµè¯ç³»ç»ä¸ï¼æ¯ä¸ªé¡¹ç®å¯è½æä¸åçæå»ºåæµè¯æ¥éª¤ï¼ä½æ¯æ´ä¸ªæµç¨æ¯åºå®çãéè¿æ¨¡æ¿æ¹æ³ï¼å¯ä»¥å®ä¹æ´ä¸ªæå»ºåæµè¯çæ¡æ¶ï¼ç¶åè®©å ·ä½é¡¹ç®å¡«å å ·ä½çæå»ºåæµè¯æ¥éª¤ã</p><div class="language-ts line-numbers-mode" data-highlighter="shiki" data-ext="ts" data-title="ts" style="--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34;">
74<pre class="shiki shiki-themes github-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// npm run code src/code/design-pattern/template-method/build-and-test-process.ts</span></span> 75<span class="line"></span> 76<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {};</span></span> 77<span class="line"></span> 78<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">abstract</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> BuildAndTestProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 79<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¿æ¯æ¨¡æ¿æ¹æ³</span></span> 80<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 81<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">build</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 82<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">test</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 83<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">cleanup</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 84<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 85<span class="line"></span> 86<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¿äºæ¯å¨åç±»ä¸å¯è½è¢«è¦ççæ¥éª¤</span></span> 87<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> build</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 88<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> test</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 89<span class="line"></span> 90<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¿æ¯ä¸ä¸ªéç¨æ¹æ³ï¼å¯ä»¥è¢«è¦çï¼ä¹å¯ä»¥ä¸è¢«è¦ç</span></span> 91<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> cleanup</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 92<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Cleaning up resources...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 93<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 94<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 95<span class="line"></span> 96<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 项ç®Açå ·ä½å®ç°</span></span> 97<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> ProjectA</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> BuildAndTestProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 98<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> build</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 99<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Building Project A...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 100<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 101<span class="line"></span> 102<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> test</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 103<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Testing Project A...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 104<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 105<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 106<span class="line"></span> 107<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 项ç®Bçå ·ä½å®ç°</span></span> 108<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> ProjectB</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> BuildAndTestProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 109<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> build</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 110<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Building Project B...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 111<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 112<span class="line"></span> 113<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> test</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 114<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Testing Project B...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 115<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 116<span class="line"></span> 117<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // éåcleanupæ¹æ³</span></span> 118<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> cleanup</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 119<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Custom cleanup for Project B...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 120<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 121<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 122<span class="line"></span> 123<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使ç¨</span></span> 124<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> projectA</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> ProjectA</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 125<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">projectA</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 126<span class="line"></span> 127<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> projectB</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> ProjectB</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 128<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">projectB</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="ç¨æ·ç颿¸²ææµç¨" tabindex="-1"><a class="header-anchor" href="#ç¨æ·ç颿¸²ææµç¨"><span>ç¨æ·ç颿¸²ææµç¨</span></a></h3><p>å¨ç¨æ·ç颿¸²ææµç¨ä¸ï¼æ¨¡æ¿æ¹æ³æ¨¡å¼å¯ä»¥ææå°ç¨äºå®ä¹ä¸ä¸ªåºå®çæ¸²ææµç¨ï¼åæ¶å 许åç±»èªå®ä¹æ¯ä¸ªæ¥éª¤çå ·ä½å®ç°ãå¨è¿ä¸ªä¾åä¸ï¼å¯ä»¥å建ä¸ä¸ªæ½è±¡çåºç±»ï¼å®ä¹ç¨æ·ç颿¸²æçæ´ä½æµç¨ï¼å¦åå§åãå¸å±ãç»å¶çï¼ï¼ç¶åå 许ä¸åçUIæ§ä»¶éè¿ç»§æ¿è¿ä¸ªåºç±»å¹¶éåç¹å®æ¹æ³æ¥å®ç°åèªç渲æé»è¾ã</p><div class="language-ts line-numbers-mode" data-highlighter="shiki" data-ext="ts" data-title="ts" style="--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34;">
128<pre class="shiki shiki-themes github-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// npm run code src/code/design-pattern/template-method/ui-rendering-process.ts</span></span> 129<span class="line"></span> 130<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {};</span></span> 131<span class="line"></span> 132<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">abstract</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> UIComponent</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 133<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¿æ¯æ¨¡æ¿æ¹æ³ï¼å®ä¹äºUIç»ä»¶çæ¸²ææµç¨</span></span> 134<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> render</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 135<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 136<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">layout</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 137<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">draw</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 138<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 139<span class="line"></span> 140<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // è¿äºæ¯å¨åç±»ä¸å¯è½è¢«è¦ççæ½è±¡æ¹æ³</span></span> 141<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 142<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> layout</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 143<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> draw</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 144<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 145<span class="line"></span> 146<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// Buttonæ§ä»¶çå ·ä½å®ç°</span></span> 147<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> Button</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> UIComponent</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 148<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 149<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Initializing Button...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 150<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 151<span class="line"></span> 152<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> layout</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 153<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Laying out Button...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 154<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 155<span class="line"></span> 156<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> draw</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 157<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Drawing Button...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 158<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 159<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 160<span class="line"></span> 161<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// TextBoxæ§ä»¶çå ·ä½å®ç°</span></span> 162<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> TextBox</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> UIComponent</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 163<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 164<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Initializing TextBox...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 165<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 166<span class="line"></span> 167<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> layout</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 168<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Laying out TextBox...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 169<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 170<span class="line"></span> 171<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> draw</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 172<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Drawing TextBox...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 173<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 174<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 175<span class="line"></span> 176<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使ç¨</span></span> 177<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> button</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> Button</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 178<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">button</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">render</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 179<span class="line"></span> 180<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> textBox</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> TextBox</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 181<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">textBox</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">render</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="å·¥ä½ä¸å¡æµç¨" tabindex="-1"><a class="header-anchor" href="#å·¥ä½ä¸å¡æµç¨"><span>å·¥ä½ä¸å¡æµç¨</span></a></h3><p>æ¨¡æ¿æ¹æ³æ¨¡å¼éåäºå®ç°å ·æåºå®æ¥éª¤ä½æ¯ä¸ªæ¥éª¤æ ¹æ®ä¸å¡è§åææä¸åç工使µç¨ãä¾å¦ï¼å¨ä¸ä¸ªè®¢åå¤çæµç¨ä¸ï¼å ¶ä¸å æ¬éªè¯è®¢åãå¤çæ¯ä»ååè´§çæ¥éª¤ãè¿äºæ¥éª¤çé¡ºåºæ¯åºå®çï¼ä½æ¯ä¸ªæ¥éª¤çå ·ä½å®ç°å¯è½ä¼æ ¹æ®ä¸åçä¸å¡è§åèååã</p><div class="language-ts line-numbers-mode" data-highlighter="shiki" data-ext="ts" data-title="ts" style="--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34;">
181<pre class="shiki shiki-themes github-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// npm run code src/code/design-pattern/template-method/business-process.ts</span></span> 182<span class="line"></span> 183<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {};</span></span> 184<span class="line"></span> 185<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// å®ä¹æ½è±¡ç工使µç¨ç±»</span></span> 186<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">abstract</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> WorkflowProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 187<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // æ¨¡æ¿æ¹æ³ï¼å®ä¹äºå·¥ä½æµç¨çæ¥éª¤</span></span> 188<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 189<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">validate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 190<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">process</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 191<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">complete</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 192<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 193<span class="line"></span> 194<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // æ½è±¡æ¹æ³ï¼ç±åç±»å®ç°å ·ä½çä¸å¡é»è¾</span></span> 195<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> validate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 196<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> process</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 197<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> complete</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 198<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 199<span class="line"></span> 200<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ç¹å®ç订åå¤çæµç¨å®ç°</span></span> 201<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> OrderProcessing</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> WorkflowProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 202<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> validate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 203<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Validating order...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 204<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°è®¢åéªè¯é»è¾</span></span> 205<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 206<span class="line"></span> 207<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> process</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 208<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Processing payment...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 209<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°æ¯ä»å¤çé»è¾</span></span> 210<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 211<span class="line"></span> 212<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> complete</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 213<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Completing order and shipping...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 214<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°è®¢å宿ååè´§é»è¾</span></span> 215<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 216<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 217<span class="line"></span> 218<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ç¹å®çå®¡æ¹æµç¨å®ç°</span></span> 219<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> ApprovalProcess</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> WorkflowProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 220<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> validate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 221<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Validating approval request...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 222<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">
222 // å®ç°å®¡æ¹è¯·æ±éªè¯é»è¾</span></span> 223<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 224<span class="line"></span> 225<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> process</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 226<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Processing approval...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 227<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°å®¡æ¹å¤çé»è¾</span></span> 228<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 229<span class="line"></span> 230<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> complete</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 231<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Completing approval...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 232<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°å®¡æ¹å®æé»è¾</span></span> 233<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 234<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 235<span class="line"></span> 236<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使ç¨</span></span> 237<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> orderProcess</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> OrderProcessing</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 238<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">orderProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 239<span class="line"></span> 240<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> approvalProcess</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> ApprovalProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 241<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">approvalProcess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="ç®æ³éª¨æ¶" tabindex="-1"><a class="header-anchor" href="#ç®æ³éª¨æ¶"><span>ç®æ³éª¨æ¶</span></a></h3><p>å¨ç®æ³åºçä¸ä¸æä¸ï¼æ¨¡æ¿æ¹æ³æ¨¡å¼å¯ä»¥ç¨æ¥å®ä¹å¤æç®æ³çåºæ¬ç»ææéª¨æ¶ï¼å è®¸ç¨æ·æå ¶ä»å¼åè æ ¹æ®ç¹å®éæ±å®ç°å ·ä½çæ¥éª¤ãä¾å¦ï¼å¨å®ç°ä¸ä¸ªæºå¨å¦ä¹ ç®æ³æ¶ï¼å¯è½ä¼æä¸ä¸ªåºå®çæµç¨ï¼æ°æ®é¢å¤çãæ¨¡åè®ç»ãç»æè¯ä¼°ãè¿ä¸ªæµç¨çæ¯ä¸ªæ¥éª¤é½å¯ä»¥æ ¹æ®ç¹å®çç®æ³ææ°æ®éè¿è¡å®å¶ã</p><div class="language-ts line-numbers-mode" data-highlighter="shiki" data-ext="ts" data-title="ts" style="--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34;">
241<pre class="shiki shiki-themes github-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// npm run code src/code/design-pattern/template-method/algorithm-skeleton.ts</span></span> 242<span class="line"></span> 243<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {};</span></span> 244<span class="line"></span> 245<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// å®ä¹æ½è±¡çæºå¨å¦ä¹ ç®æ³ç±»</span></span> 246<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">abstract</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> MachineLearningAlgorithm</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 247<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // æ¨¡æ¿æ¹æ³ï¼å®ä¹äºç®æ³çæ¥éª¤</span></span> 248<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> public</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 249<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">preprocess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 250<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">train</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 251<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">evaluate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 252<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 253<span class="line"></span> 254<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // æ½è±¡æ¹æ³ï¼ç±åç±»å®ç°å ·ä½çé»è¾</span></span> 255<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> preprocess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 256<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> train</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 257<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> abstract</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> evaluate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">;</span></span> 258<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 259<span class="line"></span> 260<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// ç¹å®çæºå¨å¦ä¹ ç®æ³å®ç°ï¼ä¾å¦å³çæ </span></span> 261<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> DecisionTreeAlgorithm</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#E5C07B;"> MachineLearningAlgorithm</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 262<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> preprocess</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 263<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Preprocessing data for Decision Tree...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 264<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°å³çæ çæ°æ®é¢å¤çé»è¾</span></span> 265<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 266<span class="line"></span> 267<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> train</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 268<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Training Decision Tree model...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 269<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°å³çæ æ¨¡åçè®ç»é»è¾</span></span> 270<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 271<span class="line"></span> 272<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> protected</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> evaluate</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">()</span><span style="--shiki-light:#D73A49;--shiki-dark:#ABB2BF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> {</span></span> 273<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;"> console</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#98C379;">'Evaluating Decision Tree model...'</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">);</span></span> 274<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;"> // å®ç°å³çæ æ¨¡åçè¯ä¼°é»è¾</span></span> 275<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;"> }</span></span> 276<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">}</span></span> 277<span class="line"></span> 278<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic;">// 使ç¨</span></span> 279<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#E5C07B;"> decisionTree</span><span style="--shiki-light:#D73A49;--shiki-dark:#56B6C2;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#C678DD;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;"> DecisionTreeAlgorithm</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span> 280<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E5C07B;">decisionTree</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#61AFEF;">execute</span><span style="--shiki-light:#24292E;--shiki-dark:#ABB2BF;">();</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,20),k=[h];function t(e,p){return a(),i("div",null,k)}const B=s(l,[["render",t],["__file","template-method.html.vue"]]),g=JSON.parse(`{"path":"/design-pattern/behavioral/template-method.html","title":"æ¨¡æ¿æ¹æ³æ¨¡å¼","lang":"zh-CN","frontmatter":{"description":"æ¨¡æ¿æ¹æ³æ¨¡å¼ æ ¸å¿ææ³ æ¨¡æ¿æ¹æ³æ¨¡å¼å 许å¨åºç±»ä¸å®ä¹ä¸ä¸ªç®æ³æ¡æ¶ï¼å¹¶å°ä¸äºæ¥éª¤çå ·ä½å®ç°å»¶è¿å°åç±»ä¸ã å ¸åç¨ä¾ æ°æ®å¤ç å¨å¤çæ°æ®çåºç¨ä¸ï¼é常æä¸ä¸ªåºå®çæµç¨ï¼å¦è¯»åãè§£æãå¤çãè¾åºæ°æ®ï¼ï¼ä½æ¯æ¯ä¸ªæ¥éª¤çå ·ä½å®ç°å¯è½æ ¹æ®æ°æ®çä¸åæ ¼å¼èååãæ¨¡æ¿æ¹æ³å¯ä»¥å®ä¹å¤çæµç¨ç骨æ¶ï¼èå ·ä½æ¥éª¤çå®ç°åçç»åç±»ã å¨è¿ä¸ªä¾åä¸ï¼æ½è±¡çæ°æ®å¤çåºç±»å®ä¹äºæ°æ®...","head":[["meta",{"property":"og:url","content":"https://guoxicheng.top/design-pattern/behavioral/template-method.html"}],["meta",{"property":"og:site_name","content":"Guo's Page"}],["meta",{"property":"og:title","content":"æ¨¡æ¿æ¹æ³æ¨¡å¼"}],["meta",{"property":"og:description","content":"æ¨¡æ¿æ¹æ³æ¨¡å¼ æ ¸å¿ææ³ æ¨¡æ¿æ¹æ³æ¨¡å¼å 许å¨åºç±»ä¸å®ä¹ä¸ä¸ªç®æ³æ¡æ¶ï¼å¹¶å°ä¸äºæ¥éª¤çå ·ä½å®ç°å»¶è¿å°åç±»ä¸ã å ¸åç¨ä¾ æ°æ®å¤ç å¨å¤çæ°æ®çåºç¨ä¸ï¼é常æä¸ä¸ªåºå®çæµç¨ï¼å¦è¯»åãè§£æãå¤çãè¾åºæ°æ®ï¼ï¼ä½æ¯æ¯ä¸ªæ¥éª¤çå ·ä½å®ç°å¯è½æ ¹æ®æ°æ®çä¸åæ ¼å¼èååãæ¨¡æ¿æ¹æ³å¯ä»¥å®ä¹å¤çæµç¨ç骨æ¶ï¼èå ·ä½æ¥éª¤çå®ç°åçç»åç±»ã å¨è¿ä¸ªä¾åä¸ï¼æ½è±¡çæ°æ®å¤çåºç±»å®ä¹äºæ°æ®..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}
280],["meta",{"property":"og:updated_time","content":"2023-11-27T02:15:28.000Z"}],["meta",{"property":"article:modified_time","content":"2023-11-27T02:15:28.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"æ¨¡æ¿æ¹æ³æ¨¡å¼\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-11-27T02:15:28.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"æ ¸å¿ææ³","slug":"æ ¸å¿ææ³","link":"#æ ¸å¿ææ³","children":[]},{"level":2,"title":"å
¸åç¨ä¾","slug":"å
¸åç¨ä¾","link":"#å
¸åç¨ä¾","children":[{"level":3,"title":"æ°æ®å¤ç","slug":"æ°æ®å¤ç","link":"#æ°æ®å¤ç","children":[]},{"level":3,"title":"软件æå»ºåæµè¯æµç¨","slug":"软件æå»ºåæµè¯æµç¨","link":"#软件æå»ºåæµè¯æµç¨","children":[]},{"level":3,"title":"ç¨æ·ç颿¸²ææµç¨","slug":"ç¨æ·ç颿¸²ææµç¨","link":"#ç¨æ·ç颿¸²ææµç¨","children":[]},{"level":3,"title":"å·¥ä½ä¸å¡æµç¨","slug":"å·¥ä½ä¸å¡æµç¨","link":"#å·¥ä½ä¸å¡æµç¨","children":[]},{"level":3,"title":"ç®æ³éª¨æ¶","slug":"ç®æ³éª¨æ¶","link":"#ç®æ³éª¨æ¶","children":[]}]}],"git":{"createdTime":1698718445000,"updatedTime":1701051328000},"readingTime":{"minutes":2.52,"words":756},"filePathRelative":"design-pattern/behavioral/template-method.md","localizedDate":"2023å¹´10æ31æ¥","autoDesc":true,"excerpt":"\\n<h2>æ ¸å¿ææ³</h2>\\n<p>æ¨¡æ¿æ¹æ³æ¨¡å¼å
许å¨åºç±»ä¸å®ä¹ä¸ä¸ªç®æ³æ¡æ¶ï¼å¹¶å°ä¸äºæ¥éª¤çå
·ä½å®ç°å»¶è¿å°åç±»ä¸ã</p>\\n<h2>å
¸åç¨ä¾</h2>\\n<h3>æ°æ®å¤ç</h3>\\n<p>å¨å¤çæ°æ®çåºç¨ä¸ï¼é常æä¸ä¸ªåºå®çæµç¨ï¼å¦è¯»åãè§£æãå¤çãè¾åºæ°æ®ï¼ï¼ä½æ¯æ¯ä¸ªæ¥éª¤çå
·ä½å®ç°å¯è½æ ¹æ®æ°æ®çä¸åæ ¼å¼èååãæ¨¡æ¿æ¹æ³å¯ä»¥å®ä¹å¤çæµç¨ç骨æ¶ï¼èå
·ä½æ¥éª¤çå®ç°åçç»åç±»ã</p>\\n<p>å¨è¿ä¸ªä¾åä¸ï¼æ½è±¡çæ°æ®å¤çåºç±»å®ä¹äºæ°æ®å¤çæµç¨ï¼ä¸åçåç±»å®ç°äºå
·ä½çæ°æ®å¤çæ¥éª¤ãå æ¤ï¼å½éè¦æ·»å æ°çæ°æ®æ ¼å¼æ¯ææ¶ï¼åªéè¦æ·»å ä¸ä¸ªæ°çå类并å®ç°å
·ä½çæ¥éª¤å³å¯ï¼èæ éä¿®æ¹ç°æä»£ç ã</p>\\n<div class=\\"language-ts line-numbers-mode\\" data-highlighter=\\"shiki\\" data-ext=\\"ts\\" data-title=\\"ts\\" style=\\"--shiki-light:#24292e;--shiki-dark:#abb2bf;--shiki-light-bg:#fff;--shiki-dark-bg:#282c34\\"><pre class=\\"shiki shiki-themes github-light one-dark-pro vp-code\\"><code><span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// npm run code src/code/design-pattern/template-method/data-processing.ts</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">export</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {};</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// å建ä¸ä¸ªæ½è±¡ç±»ï¼å®ä¹æ°æ®å¤ççæ¨¡æ¿æ¹æ³ï¼å¹¶å£°æå¨æ¨¡æ¿æ¹æ³ä¸ä½¿ç¨çæ½è±¡æ¥éª¤</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">abstract</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> class</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#E5C07B\\"> DataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // æ¨¡æ¿æ¹æ³</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> public</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> processData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">()</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> void</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> const</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> this</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">readData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">();</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> const</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> parsedData</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> this</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">parseData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> const</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> processedData</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> this</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">processDataStep</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">parsedData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> this</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">outputData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">processedData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // å£°ææ½è±¡æ¥éª¤</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> abstract</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> readData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">()</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> abstract</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> parseData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> abstract</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> processDataStep</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> abstract</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> outputData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> void</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">}</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// 为ä¸åæ°æ®æ ¼å¼å建å
·ä½çåç±»ï¼å®ç°æ½è±¡æ¥éª¤</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">class</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#E5C07B\\">
280 JSONDataProcessor</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> extends</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#E5C07B\\"> DataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> readData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">()</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // 读å JSON æ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#032F62;--shiki-dark:#98C379\\"> '{\\"name\\": \\"John\\", \\"age\\": 30}'</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> parseData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // è§£æ JSON æ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> JSON</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">parse</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> processDataStep</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // å¤çæ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\"> data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">processed</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#D19A66\\"> true</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\"> data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> outputData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> void</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // è¾åºæ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\"> console</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">log</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#032F62;--shiki-dark:#98C379\\">'JSON Data:'</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">, </span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">}</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">class</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#E5C07B\\"> XMLDataProcessor</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> extends</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#E5C07B\\"> DataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> readData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">()</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // 读å XML æ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#032F62;--shiki-dark:#98C379\\"> '<user><name>John</name><age>30</age></user>'</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> parseData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> string</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // è§£æ XML æ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // å®ç°çç¥...</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> { </span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">name</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">: </span><span style=\\"--shiki-light:#032F62;--shiki-dark:#98C379\\">'John'</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">, </span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">age</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">: </span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#D19A66\\">30</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }; </span><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// 示ä¾è¿åå¼</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> processDataStep</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // å¤çæ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\"> data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">processed</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#D19A66\\"> true</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> return</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\"> data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">;</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> protected</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> outputData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#E36209;--shiki-dark:#E06C75;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">data</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> any</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">)</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#ABB2BF\\">:</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> void</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> {</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\"> // è¾åºæ°æ®</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\"> console</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">log</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(</span><span style=\\"--shiki-light:#032F62;--shiki-dark:#98C379\\">'XML Data:'</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">, </span><span style=\\"--shiki-light:#24292E;--shiki-dark:#E06C75\\">data</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">);</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\"> }</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">}</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">const</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> jsonDataProcessor</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> new</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">
280 JSONDataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">();</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\">jsonDataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">processData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(); </span><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// å°æç
§ JSON æ°æ®å¤çæµç¨æ§è¡</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\">const</span><span style=\\"--shiki-light:#005CC5;--shiki-dark:#E5C07B\\"> xmlDataProcessor</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#56B6C2\\"> =</span><span style=\\"--shiki-light:#D73A49;--shiki-dark:#C678DD\\"> new</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\"> XMLDataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">();</span></span>\\n<span class=\\"line\\"><span style=\\"--shiki-light:#24292E;--shiki-dark:#E5C07B\\">xmlDataProcessor</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">.</span><span style=\\"--shiki-light:#6F42C1;--shiki-dark:#61AFEF\\">processData</span><span style=\\"--shiki-light:#24292E;--shiki-dark:#ABB2BF\\">(); </span><span style=\\"--shiki-light:#6A737D;--shiki-dark:#7F848E;--shiki-light-font-style:inherit;--shiki-dark-font-style:italic\\">// å°æç
§ XML æ°æ®å¤çæµç¨æ§è¡</span></span></code></pre>\\n<div class=\\"line-numbers\\" aria-hidden=\\"true\\" style=\\"counter-reset:line-number 0\\"><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div></div></div>"}`);export{B as comp,g as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.