[{"data":1,"prerenderedAt":2164},["ShallowReactive",2],{"\u002Fposts\u002Fb0439536":3,"surround-\u002Fposts\u002Fb0439536":2153},{"id":4,"title":5,"body":6,"categories":2128,"date":2130,"description":2131,"draft":2132,"extension":2133,"image":2134,"meta":2135,"navigation":851,"path":2138,"permalink":2138,"published":2139,"readingTime":2140,"recommend":131,"references":2139,"seo":2145,"sitemap":2146,"stem":2147,"tags":2148,"type":2151,"updated":2130,"__hash__":2152},"content\u002Fposts\u002F2025\u002F策略模式优化多重判断.md","策略模式优化多重判断",{"type":7,"value":8,"toc":2119},"minimark",[9,18,22,25,38,41,749,752,755,759,762,819,822,825,1042,1224,1405,1408,1411,1849,1852,1855,2101,2115],[10,11,12,13,17],"p",{},"策略模式( ",[14,15,16],"strong",{},"Strategy"," )，通常可以被用来优化多重嵌套的条件判断逻辑中，解耦代码。",[19,20,21],"h2",{"id":21},"多条件判断",[10,23,24],{},"假设有如下需求，给两个字符串a，b，经过一些处理，返回b的值，其中b的值有如下要求：",[26,27,28,32,35],"ol",{},[29,30,31],"li",{},"b为空 且a中包含0、1、2、3、4中任意一个，则b的值即为所包含的这个值，如果不包含，则返回空字符串",[29,33,34],{},"b为0 且a中包含1、2、3、4中任意一个，则b的值即为所包含的这个值，如果不包含，则返回空字符串",[29,36,37],{},"b为1 且a中包含2、3、4中任意一个，则b的值即为所包含的这个值，如果不包含，则返回空字符串",[10,39,40],{},"如果按照这个规则，直接写代码的话可能会是如下写法",[42,43,49],"pre",{"className":44,"code":45,"filename":46,"language":47,"meta":48,"style":48},"language-java shiki shiki-themes catppuccin-latte one-dark-pro","public static String getString(String a, String b) {\n    if (\"\".equals(b)) {\n        if (a.contains(\"0\")) {\n            b = \"0\";\n        } else if (a.contains(\"1\")) {\n            b = \"1\";\n        } else if (a.contains(\"2\")) {\n            b = \"2\";\n        } else if (a.contains(\"3\")) {\n            b = \"3\";\n        } else if (a.contains(\" 4 \")) {\n            b = \"4\";\n        } else {\n            b = \"\";\n        }\n    } else if (\"0\".equals(b)) {\n        if (a.contains(\"1\")) {\n            b = \"1\";\n        } else if (a.contains(\"2\")) {\n            b = \"2\";\n        } else if (a.contains(\"3\")) {\n            b = \"3\";\n        } else if (a.contains(\"4\")) {\n            b = \"4\";\n        } else {\n            b = \"\";\n        }\n    } else if (\"1\".equals(b)) {\n        if (a.contains(\"2\")) {\n            b = \"2\";\n        } else if (a.contains(\"3\")) {\n            b = \"3\";\n        } else if (a.contains(\"4\")) {\n            b = \"4\";\n        } else {\n            b = \"\";\n        }\n    }\n    return b;\n}\n","GetString.java","java","",[50,51,52,98,129,157,173,204,216,244,256,284,296,324,336,345,357,363,391,414,425,452,463,490,501,529,540,549,560,565,592,615,626,653,664,691,702,711,722,727,733,743],"code",{"__ignoreMap":48},[53,54,57,61,64,68,72,76,79,83,87,89,92,95],"span",{"class":55,"line":56},"line",1,[53,58,60],{"class":59},"sSWcl","public",[53,62,63],{"class":59}," static",[53,65,67],{"class":66},"sPahJ"," String",[53,69,71],{"class":70},"seVD2"," getString",[53,73,75],{"class":74},"syBBb","(",[53,77,78],{"class":66},"String",[53,80,82],{"class":81},"sIGPt"," a",[53,84,86],{"class":85},"sgT6j",",",[53,88,67],{"class":66},[53,90,91],{"class":81}," b",[53,93,94],{"class":74},")",[53,96,97],{"class":74}," {\n",[53,99,101,104,107,111,114,117,119,123,125,127],{"class":55,"line":100},2,[53,102,103],{"class":59},"    if",[53,105,106],{"class":74}," (",[53,108,110],{"class":109},"sw_MA","\"\"",[53,112,113],{"class":85},".",[53,115,116],{"class":70},"equals",[53,118,75],{"class":85},[53,120,122],{"class":121},"sa2x1","b",[53,124,94],{"class":85},[53,126,94],{"class":74},[53,128,97],{"class":74},[53,130,132,135,137,141,143,146,148,151,153,155],{"class":55,"line":131},3,[53,133,134],{"class":59},"        if",[53,136,106],{"class":74},[53,138,140],{"class":139},"szf8G","a",[53,142,113],{"class":85},[53,144,145],{"class":70},"contains",[53,147,75],{"class":85},[53,149,150],{"class":109},"\"0\"",[53,152,94],{"class":85},[53,154,94],{"class":74},[53,156,97],{"class":74},[53,158,160,163,167,170],{"class":55,"line":159},4,[53,161,162],{"class":81},"            b ",[53,164,166],{"class":165},"sqgB4","=",[53,168,169],{"class":109}," \"0\"",[53,171,172],{"class":85},";\n",[53,174,176,179,182,185,187,189,191,193,195,198,200,202],{"class":55,"line":175},5,[53,177,178],{"class":74},"        }",[53,180,181],{"class":59}," else",[53,183,184],{"class":59}," if",[53,186,106],{"class":74},[53,188,140],{"class":139},[53,190,113],{"class":85},[53,192,145],{"class":70},[53,194,75],{"class":85},[53,196,197],{"class":109},"\"1\"",[53,199,94],{"class":85},[53,201,94],{"class":74},[53,203,97],{"class":74},[53,205,207,209,211,214],{"class":55,"line":206},6,[53,208,162],{"class":81},[53,210,166],{"class":165},[53,212,213],{"class":109}," \"1\"",[53,215,172],{"class":85},[53,217,219,221,223,225,227,229,231,233,235,238,240,242],{"class":55,"line":218},7,[53,220,178],{"class":74},[53,222,181],{"class":59},[53,224,184],{"class":59},[53,226,106],{"class":74},[53,228,140],{"class":139},[53,230,113],{"class":85},[53,232,145],{"class":70},[53,234,75],{"class":85},[53,236,237],{"class":109},"\"2\"",[53,239,94],{"class":85},[53,241,94],{"class":74},[53,243,97],{"class":74},[53,245,247,249,251,254],{"class":55,"line":246},8,[53,248,162],{"class":81},[53,250,166],{"class":165},[53,252,253],{"class":109}," \"2\"",[53,255,172],{"class":85},[53,257,259,261,263,265,267,269,271,273,275,278,280,282],{"class":55,"line":258},9,[53,260,178],{"class":74},[53,262,181],{"class":59},[53,264,184],{"class":59},[53,266,106],{"class":74},[53,268,140],{"class":139},[53,270,113],{"class":85},[53,272,145],{"class":70},[53,274,75],{"class":85},[53,276,277],{"class":109},"\"3\"",[53,279,94],{"class":85},[53,281,94],{"class":74},[53,283,97],{"class":74},[53,285,287,289,291,294],{"class":55,"line":286},10,[53,288,162],{"class":81},[53,290,166],{"class":165},[53,292,293],{"class":109}," \"3\"",[53,295,172],{"class":85},[53,297,299,301,303,305,307,309,311,313,315,318,320,322],{"class":55,"line":298},11,[53,300,178],{"class":74},[53,302,181],{"class":59},[53,304,184],{"class":59},[53,306,106],{"class":74},[53,308,140],{"class":139},[53,310,113],{"class":85},[53,312,145],{"class":70},[53,314,75],{"class":85},[53,316,317],{"class":109},"\" 4 \"",[53,319,94],{"class":85},[53,321,94],{"class":74},[53,323,97],{"class":74},[53,325,327,329,331,334],{"class":55,"line":326},12,[53,328,162],{"class":81},[53,330,166],{"class":165},[53,332,333],{"class":109}," \"4\"",[53,335,172],{"class":85},[53,337,339,341,343],{"class":55,"line":338},13,[53,340,178],{"class":74},[53,342,181],{"class":59},[53,344,97],{"class":74},[53,346,348,350,352,355],{"class":55,"line":347},14,[53,349,162],{"class":81},[53,351,166],{"class":165},[53,353,354],{"class":109}," \"\"",[53,356,172],{"class":85},[53,358,360],{"class":55,"line":359},15,[53,361,362],{"class":74},"        }\n",[53,364,366,369,371,373,375,377,379,381,383,385,387,389],{"class":55,"line":365},16,[53,367,368],{"class":74},"    }",[53,370,181],{"class":59},[53,372,184],{"class":59},[53,374,106],{"class":74},[53,376,150],{"class":109},[53,378,113],{"class":85},[53,380,116],{"class":70},[53,382,75],{"class":85},[53,384,122],{"class":121},[53,386,94],{"class":85},[53,388,94],{"class":74},[53,390,97],{"class":74},[53,392,394,396,398,400,402,404,406,408,410,412],{"class":55,"line":393},17,[53,395,134],{"class":59},[53,397,106],{"class":74},[53,399,140],{"class":139},[53,401,113],{"class":85},[53,403,145],{"class":70},[53,405,75],{"class":85},[53,407,197],{"class":109},[53,409,94],{"class":85},[53,411,94],{"class":74},[53,413,97],{"class":74},[53,415,417,419,421,423],{"class":55,"line":416},18,[53,418,162],{"class":81},[53,420,166],{"class":165},[53,422,213],{"class":109},[53,424,172],{"class":85},[53,426,428,430,432,434,436,438,440,442,444,446,448,450],{"class":55,"line":427},19,[53,429,178],{"class":74},[53,431,181],{"class":59},[53,433,184],{"class":59},[53,435,106],{"class":74},[53,437,140],{"class":139},[53,439,113],{"class":85},[53,441,145],{"class":70},[53,443,75],{"class":85},[53,445,237],{"class":109},[53,447,94],{"class":85},[53,449,94],{"class":74},[53,451,97],{"class":74},[53,453,455,457,459,461],{"class":55,"line":454},20,[53,456,162],{"class":81},[53,458,166],{"class":165},[53,460,253],{"class":109},[53,462,172],{"class":85},[53,464,466,468,470,472,474,476,478,480,482,484,486,488],{"class":55,"line":465},21,[53,467,178],{"class":74},[53,469,181],{"class":59},[53,471,184],{"class":59},[53,473,106],{"class":74},[53,475,140],{"class":139},[53,477,113],{"class":85},[53,479,145],{"class":70},[53,481,75],{"class":85},[53,483,277],{"class":109},[53,485,94],{"class":85},[53,487,94],{"class":74},[53,489,97],{"class":74},[53,491,493,495,497,499],{"class":55,"line":492},22,[53,494,162],{"class":81},[53,496,166],{"class":165},[53,498,293],{"class":109},[53,500,172],{"class":85},[53,502,504,506,508,510,512,514,516,518,520,523,525,527],{"class":55,"line":503},23,[53,505,178],{"class":74},[53,507,181],{"class":59},[53,509,184],{"class":59},[53,511,106],{"class":74},[53,513,140],{"class":139},[53,515,113],{"class":85},[53,517,145],{"class":70},[53,519,75],{"class":85},[53,521,522],{"class":109},"\"4\"",[53,524,94],{"class":85},[53,526,94],{"class":74},[53,528,97],{"class":74},[53,530,532,534,536,538],{"class":55,"line":531},24,[53,533,162],{"class":81},[53,535,166],{"class":165},[53,537,333],{"class":109},[53,539,172],{"class":85},[53,541,543,545,547],{"class":55,"line":542},25,[53,544,178],{"class":74},[53,546,181],{"class":59},[53,548,97],{"class":74},[53,550,552,554,556,558],{"class":55,"line":551},26,[53,553,162],{"class":81},[53,555,166],{"class":165},[53,557,354],{"class":109},[53,559,172],{"class":85},[53,561,563],{"class":55,"line":562},27,[53,564,362],{"class":74},[53,566,568,570,572,574,576,578,580,582,584,586,588,590],{"class":55,"line":567},28,[53,569,368],{"class":74},[53,571,181],{"class":59},[53,573,184],{"class":59},[53,575,106],{"class":74},[53,577,197],{"class":109},[53,579,113],{"class":85},[53,581,116],{"class":70},[53,583,75],{"class":85},[53,585,122],{"class":121},[53,587,94],{"class":85},[53,589,94],{"class":74},[53,591,97],{"class":74},[53,593,595,597,599,601,603,605,607,609,611,613],{"class":55,"line":594},29,[53,596,134],{"class":59},[53,598,106],{"class":74},[53,600,140],{"class":139},[53,602,113],{"class":85},[53,604,145],{"class":70},[53,606,75],{"class":85},[53,608,237],{"class":109},[53,610,94],{"class":85},[53,612,94],{"class":74},[53,614,97],{"class":74},[53,616,618,620,622,624],{"class":55,"line":617},30,[53,619,162],{"class":81},[53,621,166],{"class":165},[53,623,253],{"class":109},[53,625,172],{"class":85},[53,627,629,631,633,635,637,639,641,643,645,647,649,651],{"class":55,"line":628},31,[53,630,178],{"class":74},[53,632,181],{"class":59},[53,634,184],{"class":59},[53,636,106],{"class":74},[53,638,140],{"class":139},[53,640,113],{"class":85},[53,642,145],{"class":70},[53,644,75],{"class":85},[53,646,277],{"class":109},[53,648,94],{"class":85},[53,650,94],{"class":74},[53,652,97],{"class":74},[53,654,656,658,660,662],{"class":55,"line":655},32,[53,657,162],{"class":81},[53,659,166],{"class":165},[53,661,293],{"class":109},[53,663,172],{"class":85},[53,665,667,669,671,673,675,677,679,681,683,685,687,689],{"class":55,"line":666},33,[53,668,178],{"class":74},[53,670,181],{"class":59},[53,672,184],{"class":59},[53,674,106],{"class":74},[53,676,140],{"class":139},[53,678,113],{"class":85},[53,680,145],{"class":70},[53,682,75],{"class":85},[53,684,522],{"class":109},[53,686,94],{"class":85},[53,688,94],{"class":74},[53,690,97],{"class":74},[53,692,694,696,698,700],{"class":55,"line":693},34,[53,695,162],{"class":81},[53,697,166],{"class":165},[53,699,333],{"class":109},[53,701,172],{"class":85},[53,703,705,707,709],{"class":55,"line":704},35,[53,706,178],{"class":74},[53,708,181],{"class":59},[53,710,97],{"class":74},[53,712,714,716,718,720],{"class":55,"line":713},36,[53,715,162],{"class":81},[53,717,166],{"class":165},[53,719,354],{"class":109},[53,721,172],{"class":85},[53,723,725],{"class":55,"line":724},37,[53,726,362],{"class":74},[53,728,730],{"class":55,"line":729},38,[53,731,732],{"class":74},"    }\n",[53,734,736,739,741],{"class":55,"line":735},39,[53,737,738],{"class":59},"    return",[53,740,91],{"class":81},[53,742,172],{"class":85},[53,744,746],{"class":55,"line":745},40,[53,747,748],{"class":74},"}\n",[10,750,751],{},"可以看到如果全部是顺序逻辑编写的话，会嵌套很多层的if-else，不利于后期维护时增加其他逻辑或者修改逻辑等，这时候就可以考虑使用策略模式来优化多层if-else的判断。",[19,753,754],{"id":754},"策略模式优化步骤",[756,757,758],"h3",{"id":758},"构造策略接口",[10,760,761],{},"通过上面的要求，可以了解到最外层是3次判断b的值，所以我们可以简单分类为3种策略，首先抽象出这3种策略的通用接口接口，然后再分3中实现方式实现这个接口",[42,763,766],{"className":44,"code":764,"filename":765,"language":47,"meta":48,"style":48},"\u002F**\n * 获取字符串策略接口\n *\u002F\npublic interface GetStringStrategy {\n    String getStringStrategy(String a);\n}\n","GetStringStrategy.java",[50,767,768,774,779,784,797,815],{"__ignoreMap":48},[53,769,770],{"class":55,"line":56},[53,771,773],{"class":772},"skYY2","\u002F**\n",[53,775,776],{"class":55,"line":100},[53,777,778],{"class":772}," * 获取字符串策略接口\n",[53,780,781],{"class":55,"line":131},[53,782,783],{"class":772}," *\u002F\n",[53,785,786,788,791,795],{"class":55,"line":159},[53,787,60],{"class":59},[53,789,790],{"class":59}," interface",[53,792,794],{"class":793},"sIkkJ"," GetStringStrategy",[53,796,97],{"class":85},[53,798,799,802,805,807,809,812],{"class":55,"line":175},[53,800,801],{"class":66},"    String",[53,803,804],{"class":70}," getStringStrategy",[53,806,75],{"class":85},[53,808,78],{"class":66},[53,810,82],{"class":811},"sddMY",[53,813,814],{"class":85},");\n",[53,816,817],{"class":55,"line":206},[53,818,748],{"class":85},[756,820,821],{"id":821},"实现策略接口",[10,823,824],{},"编写策略接口的实现类，这里就是内层的判断，把内层的判断逻辑摘出来，改为3个策略接口的实现类",[42,826,829],{"className":44,"code":827,"filename":828,"language":47,"meta":48,"style":48},"import demo.GetStringStrategy;\n\n\u002F**\n * b为空的实现类\n * @author dhbxs\n * @since 2025\u002F9\u002F12 9:19\n *\u002F\npublic class GetStringStrategyAImpl implements GetStringStrategy {\n\n    @Override\n    public String getStringStrategy(String a) {\n        for (char ch : \"01234\".toCharArray()) {\n            if (a.contains(String.valueOf(ch))) {\n                return String.valueOf(ch);\n            }\n        }\n        return \"\";\n    }\n}\n","GetStringStrategyAImpl.java",[50,830,831,847,853,857,862,874,884,888,905,909,919,938,967,999,1016,1021,1025,1034,1038],{"__ignoreMap":48},[53,832,833,836,839,842,845],{"class":55,"line":56},[53,834,835],{"class":59},"import",[53,837,838],{"class":139}," demo",[53,840,113],{"class":841},"sGc2n",[53,843,844],{"class":139},"GetStringStrategy",[53,846,172],{"class":85},[53,848,849],{"class":55,"line":100},[53,850,852],{"emptyLinePlaceholder":851},true,"\n",[53,854,855],{"class":55,"line":131},[53,856,773],{"class":772},[53,858,859],{"class":55,"line":159},[53,860,861],{"class":772}," * b为空的实现类\n",[53,863,864,867,871],{"class":55,"line":175},[53,865,866],{"class":772}," * ",[53,868,870],{"class":869},"szsGz","@author",[53,872,873],{"class":772}," dhbxs\n",[53,875,876,878,881],{"class":55,"line":206},[53,877,866],{"class":772},[53,879,880],{"class":869},"@since",[53,882,883],{"class":772}," 2025\u002F9\u002F12 9:19\n",[53,885,886],{"class":55,"line":218},[53,887,783],{"class":772},[53,889,890,892,895,898,901,903],{"class":55,"line":246},[53,891,60],{"class":59},[53,893,894],{"class":59}," class",[53,896,897],{"class":793}," GetStringStrategyAImpl",[53,899,900],{"class":59}," implements",[53,902,794],{"class":793},[53,904,97],{"class":85},[53,906,907],{"class":55,"line":258},[53,908,852],{"emptyLinePlaceholder":851},[53,910,911,915],{"class":55,"line":286},[53,912,914],{"class":913},"slb6Y","    @",[53,916,918],{"class":917},"saiVi","Override\n",[53,920,921,924,926,928,930,932,934,936],{"class":55,"line":298},[53,922,923],{"class":59},"    public",[53,925,67],{"class":66},[53,927,804],{"class":70},[53,929,75],{"class":85},[53,931,78],{"class":66},[53,933,82],{"class":811},[53,935,94],{"class":85},[53,937,97],{"class":85},[53,939,940,943,945,948,951,954,957,959,962,965],{"class":55,"line":326},[53,941,942],{"class":59},"        for",[53,944,106],{"class":85},[53,946,947],{"class":59},"char",[53,949,950],{"class":81}," ch",[53,952,953],{"class":59}," :",[53,955,956],{"class":109}," \"01234\"",[53,958,113],{"class":85},[53,960,961],{"class":70},"toCharArray",[53,963,964],{"class":85},"())",[53,966,97],{"class":85},[53,968,969,972,974,976,978,980,982,984,986,989,991,994,997],{"class":55,"line":338},[53,970,971],{"class":59},"            if",[53,973,106],{"class":85},[53,975,140],{"class":139},[53,977,113],{"class":85},[53,979,145],{"class":70},[53,981,75],{"class":85},[53,983,78],{"class":139},[53,985,113],{"class":85},[53,987,988],{"class":70},"valueOf",[53,990,75],{"class":85},[53,992,993],{"class":121},"ch",[53,995,996],{"class":85},")))",[53,998,97],{"class":85},[53,1000,1001,1004,1006,1008,1010,1012,1014],{"class":55,"line":347},[53,1002,1003],{"class":59},"                return",[53,1005,67],{"class":139},[53,1007,113],{"class":85},[53,1009,988],{"class":70},[53,1011,75],{"class":85},[53,1013,993],{"class":121},[53,1015,814],{"class":85},[53,1017,1018],{"class":55,"line":359},[53,1019,1020],{"class":85},"            }\n",[53,1022,1023],{"class":55,"line":365},[53,1024,362],{"class":85},[53,1026,1027,1030,1032],{"class":55,"line":393},[53,1028,1029],{"class":59},"        return",[53,1031,354],{"class":109},[53,1033,172],{"class":85},[53,1035,1036],{"class":55,"line":416},[53,1037,732],{"class":85},[53,1039,1040],{"class":55,"line":427},[53,1041,748],{"class":85},[42,1043,1046],{"className":44,"code":1044,"filename":1045,"language":47,"meta":48,"style":48},"import demo.GetStringStrategy;\n\n\u002F**\n * b为0的实现类\n * @author dhbxs\n * @since 2025\u002F9\u002F12 9:22\n *\u002F\npublic class GetStringStrategyBImpl implements GetStringStrategy {\n    @Override\n    public String getStringStrategy(String a) {\n        for (char ch : \"1234\".toCharArray()) {\n            if (a.contains(String.valueOf(ch))) {\n                return String.valueOf(ch);\n            }\n        }\n        return \"\";\n    }\n}\n","GetStringStrategyBImpl.java",[50,1047,1048,1060,1064,1068,1073,1081,1090,1094,1109,1115,1133,1156,1184,1200,1204,1208,1216,1220],{"__ignoreMap":48},[53,1049,1050,1052,1054,1056,1058],{"class":55,"line":56},[53,1051,835],{"class":59},[53,1053,838],{"class":139},[53,1055,113],{"class":841},[53,1057,844],{"class":139},[53,1059,172],{"class":85},[53,1061,1062],{"class":55,"line":100},[53,1063,852],{"emptyLinePlaceholder":851},[53,1065,1066],{"class":55,"line":131},[53,1067,773],{"class":772},[53,1069,1070],{"class":55,"line":159},[53,1071,1072],{"class":772}," * b为0的实现类\n",[53,1074,1075,1077,1079],{"class":55,"line":175},[53,1076,866],{"class":772},[53,1078,870],{"class":869},[53,1080,873],{"class":772},[53,1082,1083,1085,1087],{"class":55,"line":206},[53,1084,866],{"class":772},[53,1086,880],{"class":869},[53,1088,1089],{"class":772}," 2025\u002F9\u002F12 9:22\n",[53,1091,1092],{"class":55,"line":218},[53,1093,783],{"class":772},[53,1095,1096,1098,1100,1103,1105,1107],{"class":55,"line":246},[53,1097,60],{"class":59},[53,1099,894],{"class":59},[53,1101,1102],{"class":793}," GetStringStrategyBImpl",[53,1104,900],{"class":59},[53,1106,794],{"class":793},[53,1108,97],{"class":85},[53,1110,1111,1113],{"class":55,"line":258},[53,1112,914],{"class":913},[53,1114,918],{"class":917},[53,1116,1117,1119,1121,1123,1125,1127,1129,1131],{"class":55,"line":286},[53,1118,923],{"class":59},[53,1120,67],{"class":66},[53,1122,804],{"class":70},[53,1124,75],{"class":85},[53,1126,78],{"class":66},[53,1128,82],{"class":811},[53,1130,94],{"class":85},[53,1132,97],{"class":85},[53,1134,1135,1137,1139,1141,1143,1145,1148,1150,1152,1154],{"class":55,"line":298},[53,1136,942],{"class":59},[53,1138,106],{"class":85},[53,1140,947],{"class":59},[53,1142,950],{"class":81},[53,1144,953],{"class":59},[53,1146,1147],{"class":109}," \"1234\"",[53,1149,113],{"class":85},[53,1151,961],{"class":70},[53,1153,964],{"class":85},[53,1155,97],{"class":85},[53,1157,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182],{"class":55,"line":326},[53,1159,971],{"class":59},[53,1161,106],{"class":85},[53,1163,140],{"class":139},[53,1165,113],{"class":85},[53,1167,145],{"class":70},[53,1169,75],{"class":85},[53,1171,78],{"class":139},[53,1173,113],{"class":85},[53,1175,988],{"class":70},[53,1177,75],{"class":85},[53,1179,993],{"class":121},[53,1181,996],{"class":85},[53,1183,97],{"class":85},[53,1185,1186,1188,1190,1192,1194,1196,1198],{"class":55,"line":338},[53,1187,1003],{"class":59},[53,1189,67],{"class":139},[53,1191,113],{"class":85},[53,1193,988],{"class":70},[53,1195,75],{"class":85},[53,1197,993],{"class":121},[53,1199,814],{"class":85},[53,1201,1202],{"class":55,"line":347},[53,1203,1020],{"class":85},[53,1205,1206],{"class":55,"line":359},[53,1207,362],{"class":85},[53,1209,1210,1212,1214],{"class":55,"line":365},[53,1211,1029],{"class":59},[53,1213,354],{"class":109},[53,1215,172],{"class":85},[53,1217,1218],{"class":55,"line":393},[53,1219,732],{"class":85},[53,1221,1222],{"class":55,"line":416},[53,1223,748],{"class":85},[42,1225,1228],{"className":44,"code":1226,"filename":1227,"language":47,"meta":48,"style":48},"import demo.GetStringStrategy;\n\n\u002F**\n * b为1的实现类\n * @author dhbxs\n * @since 2025\u002F9\u002F12 9:22\n *\u002F\npublic class GetStringStrategyCImpl implements GetStringStrategy {\n    @Override\n    public String getStringStrategy(String a) {\n        for (char ch : \"234\".toCharArray()) {\n            if (a.contains(String.valueOf(ch))) {\n                return String.valueOf(ch);\n            }\n        }\n        return \"\";\n    }\n}\n","GetStringStrategyCImpl.java",[50,1229,1230,1242,1246,1250,1255,1263,1271,1275,1290,1296,1314,1337,1365,1381,1385,1389,1397,1401],{"__ignoreMap":48},[53,1231,1232,1234,1236,1238,1240],{"class":55,"line":56},[53,1233,835],{"class":59},[53,1235,838],{"class":139},[53,1237,113],{"class":841},[53,1239,844],{"class":139},[53,1241,172],{"class":85},[53,1243,1244],{"class":55,"line":100},[53,1245,852],{"emptyLinePlaceholder":851},[53,1247,1248],{"class":55,"line":131},[53,1249,773],{"class":772},[53,1251,1252],{"class":55,"line":159},[53,1253,1254],{"class":772}," * b为1的实现类\n",[53,1256,1257,1259,1261],{"class":55,"line":175},[53,1258,866],{"class":772},[53,1260,870],{"class":869},[53,1262,873],{"class":772},[53,1264,1265,1267,1269],{"class":55,"line":206},[53,1266,866],{"class":772},[53,1268,880],{"class":869},[53,1270,1089],{"class":772},[53,1272,1273],{"class":55,"line":218},[53,1274,783],{"class":772},[53,1276,1277,1279,1281,1284,1286,1288],{"class":55,"line":246},[53,1278,60],{"class":59},[53,1280,894],{"class":59},[53,1282,1283],{"class":793}," GetStringStrategyCImpl",[53,1285,900],{"class":59},[53,1287,794],{"class":793},[53,1289,97],{"class":85},[53,1291,1292,1294],{"class":55,"line":258},[53,1293,914],{"class":913},[53,1295,918],{"class":917},[53,1297,1298,1300,1302,1304,1306,1308,1310,1312],{"class":55,"line":286},[53,1299,923],{"class":59},[53,1301,67],{"class":66},[53,1303,804],{"class":70},[53,1305,75],{"class":85},[53,1307,78],{"class":66},[53,1309,82],{"class":811},[53,1311,94],{"class":85},[53,1313,97],{"class":85},[53,1315,1316,1318,1320,1322,1324,1326,1329,1331,1333,1335],{"class":55,"line":298},[53,1317,942],{"class":59},[53,1319,106],{"class":85},[53,1321,947],{"class":59},[53,1323,950],{"class":81},[53,1325,953],{"class":59},[53,1327,1328],{"class":109}," \"234\"",[53,1330,113],{"class":85},[53,1332,961],{"class":70},[53,1334,964],{"class":85},[53,1336,97],{"class":85},[53,1338,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363],{"class":55,"line":326},[53,1340,971],{"class":59},[53,1342,106],{"class":85},[53,1344,140],{"class":139},[53,1346,113],{"class":85},[53,1348,145],{"class":70},[53,1350,75],{"class":85},[53,1352,78],{"class":139},[53,1354,113],{"class":85},[53,1356,988],{"class":70},[53,1358,75],{"class":85},[53,1360,993],{"class":121},[53,1362,996],{"class":85},[53,1364,97],{"class":85},[53,1366,1367,1369,1371,1373,1375,1377,1379],{"class":55,"line":338},[53,1368,1003],{"class":59},[53,1370,67],{"class":139},[53,1372,113],{"class":85},[53,1374,988],{"class":70},[53,1376,75],{"class":85},[53,1378,993],{"class":121},[53,1380,814],{"class":85},[53,1382,1383],{"class":55,"line":347},[53,1384,1020],{"class":85},[53,1386,1387],{"class":55,"line":359},[53,1388,362],{"class":85},[53,1390,1391,1393,1395],{"class":55,"line":365},[53,1392,1029],{"class":59},[53,1394,354],{"class":109},[53,1396,172],{"class":85},[53,1398,1399],{"class":55,"line":393},[53,1400,732],{"class":85},[53,1402,1403],{"class":55,"line":416},[53,1404,748],{"class":85},[756,1406,1407],{"id":1407},"工厂类创建策略",[10,1409,1410],{},"有了策略接口，也有了3种策略对应的实现类，现在需要由统一的一个工厂类帮助我们创建这3种实现类的实体对象，隐藏具体调用的实现类，对外只暴露该工厂类，方便调用",[42,1412,1415],{"className":44,"code":1413,"filename":1414,"language":47,"meta":48,"style":48},"package demo;\n\nimport demo.impl.GetStringStrategyAImpl;\nimport demo.impl.GetStringStrategyBImpl;\nimport demo.impl.GetStringStrategyCImpl;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n\u002F**\n * 创建策略工厂类\n *\n * @author dhbxs\n * @since 2025\u002F9\u002F12 9:24\n *\u002F\npublic class GetStringStrategyFactory {\n\n    \u002F\u002F 策略Map, Key 为策略类型, Value 为 策略具体实现类的接口 GetStringStrategy\n    private static final Map\u003CString, GetStringStrategy> strategis = new HashMap\u003C>();\n\n    \u002F\u002F 提前创建好策略类，缓存到 Map 中\n    static {\n        strategis.put(\"\", new GetStringStrategyAImpl());\n        strategis.put(\"0\", new GetStringStrategyBImpl());\n        strategis.put(\"1\", new GetStringStrategyCImpl());\n    }\n\n    \u002F**\n     * 传入判断条件，获取业务中需要使用的具体策略实现类\n     *\n     * @param condition 判断条件\n     * @return 策略实现类\n     *\u002F\n    public static GetStringStrategy getStringStrategy(String condition) {\n        if (condition == null) {\n            throw new IllegalArgumentException(\"condition shoud not be null\");\n        }\n\n        return strategis.get(condition);\n    }\n}\n","GetStringStrategyFactory.java",[50,1416,1417,1426,1430,1448,1465,1482,1486,1505,1522,1526,1530,1535,1540,1548,1557,1561,1572,1576,1581,1625,1629,1634,1641,1664,1684,1704,1708,1712,1717,1722,1727,1741,1751,1756,1776,1796,1813,1817,1821,1840,1844],{"__ignoreMap":48},[53,1418,1419,1422,1424],{"class":55,"line":56},[53,1420,1421],{"class":59},"package",[53,1423,838],{"class":59},[53,1425,172],{"class":85},[53,1427,1428],{"class":55,"line":100},[53,1429,852],{"emptyLinePlaceholder":851},[53,1431,1432,1434,1436,1438,1441,1443,1446],{"class":55,"line":131},[53,1433,835],{"class":59},[53,1435,838],{"class":139},[53,1437,113],{"class":841},[53,1439,1440],{"class":139},"impl",[53,1442,113],{"class":841},[53,1444,1445],{"class":139},"GetStringStrategyAImpl",[53,1447,172],{"class":85},[53,1449,1450,1452,1454,1456,1458,1460,1463],{"class":55,"line":159},[53,1451,835],{"class":59},[53,1453,838],{"class":139},[53,1455,113],{"class":841},[53,1457,1440],{"class":139},[53,1459,113],{"class":841},[53,1461,1462],{"class":139},"GetStringStrategyBImpl",[53,1464,172],{"class":85},[53,1466,1467,1469,1471,1473,1475,1477,1480],{"class":55,"line":175},[53,1468,835],{"class":59},[53,1470,838],{"class":139},[53,1472,113],{"class":841},[53,1474,1440],{"class":139},[53,1476,113],{"class":841},[53,1478,1479],{"class":139},"GetStringStrategyCImpl",[53,1481,172],{"class":85},[53,1483,1484],{"class":55,"line":206},[53,1485,852],{"emptyLinePlaceholder":851},[53,1487,1488,1490,1493,1495,1498,1500,1503],{"class":55,"line":218},[53,1489,835],{"class":59},[53,1491,1492],{"class":139}," java",[53,1494,113],{"class":841},[53,1496,1497],{"class":139},"util",[53,1499,113],{"class":841},[53,1501,1502],{"class":139},"HashMap",[53,1504,172],{"class":85},[53,1506,1507,1509,1511,1513,1515,1517,1520],{"class":55,"line":246},[53,1508,835],{"class":59},[53,1510,1492],{"class":139},[53,1512,113],{"class":841},[53,1514,1497],{"class":139},[53,1516,113],{"class":841},[53,1518,1519],{"class":139},"Map",[53,1521,172],{"class":85},[53,1523,1524],{"class":55,"line":258},[53,1525,852],{"emptyLinePlaceholder":851},[53,1527,1528],{"class":55,"line":286},[53,1529,773],{"class":772},[53,1531,1532],{"class":55,"line":298},[53,1533,1534],{"class":772}," * 创建策略工厂类\n",[53,1536,1537],{"class":55,"line":326},[53,1538,1539],{"class":772}," *\n",[53,1541,1542,1544,1546],{"class":55,"line":338},[53,1543,866],{"class":772},[53,1545,870],{"class":869},[53,1547,873],{"class":772},[53,1549,1550,1552,1554],{"class":55,"line":347},[53,1551,866],{"class":772},[53,1553,880],{"class":869},[53,1555,1556],{"class":772}," 2025\u002F9\u002F12 9:24\n",[53,1558,1559],{"class":55,"line":359},[53,1560,783],{"class":772},[53,1562,1563,1565,1567,1570],{"class":55,"line":365},[53,1564,60],{"class":59},[53,1566,894],{"class":59},[53,1568,1569],{"class":793}," GetStringStrategyFactory",[53,1571,97],{"class":85},[53,1573,1574],{"class":55,"line":393},[53,1575,852],{"emptyLinePlaceholder":851},[53,1577,1578],{"class":55,"line":416},[53,1579,1580],{"class":772},"    \u002F\u002F 策略Map, Key 为策略类型, Value 为 策略具体实现类的接口 GetStringStrategy\n",[53,1582,1583,1586,1588,1591,1594,1597,1599,1601,1603,1606,1609,1611,1614,1617,1620,1623],{"class":55,"line":427},[53,1584,1585],{"class":59},"    private",[53,1587,63],{"class":59},[53,1589,1590],{"class":59}," final",[53,1592,1593],{"class":66}," Map",[53,1595,1596],{"class":85},"\u003C",[53,1598,78],{"class":66},[53,1600,86],{"class":85},[53,1602,794],{"class":66},[53,1604,1605],{"class":85},">",[53,1607,1608],{"class":81}," strategis ",[53,1610,166],{"class":165},[53,1612,1613],{"class":59}," new",[53,1615,1616],{"class":66}," HashMap",[53,1618,1619],{"class":85},"\u003C>",[53,1621,1622],{"class":74},"()",[53,1624,172],{"class":85},[53,1626,1627],{"class":55,"line":454},[53,1628,852],{"emptyLinePlaceholder":851},[53,1630,1631],{"class":55,"line":465},[53,1632,1633],{"class":772},"    \u002F\u002F 提前创建好策略类，缓存到 Map 中\n",[53,1635,1636,1639],{"class":55,"line":492},[53,1637,1638],{"class":59},"    static",[53,1640,97],{"class":74},[53,1642,1643,1646,1648,1651,1653,1655,1657,1659,1661],{"class":55,"line":503},[53,1644,1645],{"class":139},"        strategis",[53,1647,113],{"class":85},[53,1649,1650],{"class":70},"put",[53,1652,75],{"class":85},[53,1654,110],{"class":109},[53,1656,86],{"class":85},[53,1658,1613],{"class":59},[53,1660,897],{"class":70},[53,1662,1663],{"class":85},"());\n",[53,1665,1666,1668,1670,1672,1674,1676,1678,1680,1682],{"class":55,"line":531},[53,1667,1645],{"class":139},[53,1669,113],{"class":85},[53,1671,1650],{"class":70},[53,1673,75],{"class":85},[53,1675,150],{"class":109},[53,1677,86],{"class":85},[53,1679,1613],{"class":59},[53,1681,1102],{"class":70},[53,1683,1663],{"class":85},[53,1685,1686,1688,1690,1692,1694,1696,1698,1700,1702],{"class":55,"line":542},[53,1687,1645],{"class":139},[53,1689,113],{"class":85},[53,1691,1650],{"class":70},[53,1693,75],{"class":85},[53,1695,197],{"class":109},[53,1697,86],{"class":85},[53,1699,1613],{"class":59},[53,1701,1283],{"class":70},[53,1703,1663],{"class":85},[53,1705,1706],{"class":55,"line":551},[53,1707,732],{"class":74},[53,1709,1710],{"class":55,"line":562},[53,1711,852],{"emptyLinePlaceholder":851},[53,1713,1714],{"class":55,"line":567},[53,1715,1716],{"class":772},"    \u002F**\n",[53,1718,1719],{"class":55,"line":594},[53,1720,1721],{"class":772},"     * 传入判断条件，获取业务中需要使用的具体策略实现类\n",[53,1723,1724],{"class":55,"line":617},[53,1725,1726],{"class":772},"     *\n",[53,1728,1729,1732,1735,1738],{"class":55,"line":628},[53,1730,1731],{"class":772},"     * ",[53,1733,1734],{"class":869},"@param",[53,1736,1737],{"class":811}," condition",[53,1739,1740],{"class":772}," 判断条件\n",[53,1742,1743,1745,1748],{"class":55,"line":655},[53,1744,1731],{"class":772},[53,1746,1747],{"class":869},"@return",[53,1749,1750],{"class":772}," 策略实现类\n",[53,1752,1753],{"class":55,"line":666},[53,1754,1755],{"class":772},"     *\u002F\n",[53,1757,1758,1760,1762,1764,1766,1768,1770,1772,1774],{"class":55,"line":693},[53,1759,923],{"class":59},[53,1761,63],{"class":59},[53,1763,794],{"class":66},[53,1765,804],{"class":70},[53,1767,75],{"class":85},[53,1769,78],{"class":66},[53,1771,1737],{"class":811},[53,1773,94],{"class":85},[53,1775,97],{"class":85},[53,1777,1778,1780,1782,1785,1788,1792,1794],{"class":55,"line":704},[53,1779,134],{"class":59},[53,1781,106],{"class":85},[53,1783,1784],{"class":121},"condition ",[53,1786,1787],{"class":165},"==",[53,1789,1791],{"class":1790},"sFiMs"," null",[53,1793,94],{"class":85},[53,1795,97],{"class":85},[53,1797,1798,1801,1803,1806,1808,1811],{"class":55,"line":713},[53,1799,1800],{"class":59},"            throw",[53,1802,1613],{"class":59},[53,1804,1805],{"class":70}," IllegalArgumentException",[53,1807,75],{"class":85},[53,1809,1810],{"class":109},"\"condition shoud not be null\"",[53,1812,814],{"class":85},[53,1814,1815],{"class":55,"line":724},[53,1816,362],{"class":85},[53,1818,1819],{"class":55,"line":729},[53,1820,852],{"emptyLinePlaceholder":851},[53,1822,1823,1825,1828,1830,1833,1835,1838],{"class":55,"line":735},[53,1824,1029],{"class":59},[53,1826,1827],{"class":139}," strategis",[53,1829,113],{"class":85},[53,1831,1832],{"class":70},"get",[53,1834,75],{"class":85},[53,1836,1837],{"class":121},"condition",[53,1839,814],{"class":85},[53,1841,1842],{"class":55,"line":745},[53,1843,732],{"class":85},[53,1845,1847],{"class":55,"line":1846},41,[53,1848,748],{"class":85},[756,1850,1851],{"id":1851},"调用策略",[10,1853,1854],{},"有了工厂类后，调用方就不需要关心具体调用哪个实现类，只需要调用工厂方法就行，从而达到优化解耦合多重复杂 if-else 嵌套的判断逻辑",[42,1856,1859],{"className":44,"code":1857,"filename":1858,"language":47,"meta":48,"style":48},"\u002F**\n * 类似这种根据某一个值类型的不同，去执行不同的代码逻辑时，可以使用策略模式来优化\n *\n * @param a 内层条件a\n * @param b 外层条件b\n * @return b的值\n *\u002F\npublic static String getStringByStrategy(String a, String b) {\n    GetStringStrategy stringStrategy = GetStringStrategyFactory.getStringStrategy(b);\n    if (stringStrategy != null) {\n        return stringStrategy.getStringStrategy(a);\n    }\n    return b;\n}\n\npublic static void main(String[] args) {\n    String a = \"4\";\n    String b = \"2\";\n    System.out.println(getStringByStrategy(a, b));\n}\n","GetStringByStrategy.java",[50,1860,1861,1865,1870,1874,1885,1896,1905,1909,1936,1959,1977,1994,1998,2006,2010,2014,2040,2053,2066,2097],{"__ignoreMap":48},[53,1862,1863],{"class":55,"line":56},[53,1864,773],{"class":772},[53,1866,1867],{"class":55,"line":100},[53,1868,1869],{"class":772}," * 类似这种根据某一个值类型的不同，去执行不同的代码逻辑时，可以使用策略模式来优化\n",[53,1871,1872],{"class":55,"line":131},[53,1873,1539],{"class":772},[53,1875,1876,1878,1880,1882],{"class":55,"line":159},[53,1877,866],{"class":772},[53,1879,1734],{"class":869},[53,1881,82],{"class":811},[53,1883,1884],{"class":772}," 内层条件a\n",[53,1886,1887,1889,1891,1893],{"class":55,"line":175},[53,1888,866],{"class":772},[53,1890,1734],{"class":869},[53,1892,91],{"class":811},[53,1894,1895],{"class":772}," 外层条件b\n",[53,1897,1898,1900,1902],{"class":55,"line":206},[53,1899,866],{"class":772},[53,1901,1747],{"class":869},[53,1903,1904],{"class":772}," b的值\n",[53,1906,1907],{"class":55,"line":218},[53,1908,783],{"class":772},[53,1910,1911,1913,1915,1917,1920,1922,1924,1926,1928,1930,1932,1934],{"class":55,"line":246},[53,1912,60],{"class":59},[53,1914,63],{"class":59},[53,1916,67],{"class":66},[53,1918,1919],{"class":70}," getStringByStrategy",[53,1921,75],{"class":74},[53,1923,78],{"class":66},[53,1925,82],{"class":81},[53,1927,86],{"class":85},[53,1929,67],{"class":66},[53,1931,91],{"class":81},[53,1933,94],{"class":74},[53,1935,97],{"class":74},[53,1937,1938,1941,1944,1946,1948,1950,1953,1955,1957],{"class":55,"line":258},[53,1939,1940],{"class":66},"    GetStringStrategy",[53,1942,1943],{"class":81}," stringStrategy ",[53,1945,166],{"class":165},[53,1947,1569],{"class":139},[53,1949,113],{"class":85},[53,1951,1952],{"class":70},"getStringStrategy",[53,1954,75],{"class":85},[53,1956,122],{"class":121},[53,1958,814],{"class":85},[53,1960,1961,1963,1965,1968,1971,1973,1975],{"class":55,"line":286},[53,1962,103],{"class":59},[53,1964,106],{"class":74},[53,1966,1967],{"class":81},"stringStrategy ",[53,1969,1970],{"class":165},"!=",[53,1972,1791],{"class":1790},[53,1974,94],{"class":74},[53,1976,97],{"class":74},[53,1978,1979,1981,1984,1986,1988,1990,1992],{"class":55,"line":298},[53,1980,1029],{"class":59},[53,1982,1983],{"class":139}," stringStrategy",[53,1985,113],{"class":85},[53,1987,1952],{"class":70},[53,1989,75],{"class":85},[53,1991,140],{"class":121},[53,1993,814],{"class":85},[53,1995,1996],{"class":55,"line":326},[53,1997,732],{"class":74},[53,1999,2000,2002,2004],{"class":55,"line":338},[53,2001,738],{"class":59},[53,2003,91],{"class":81},[53,2005,172],{"class":85},[53,2007,2008],{"class":55,"line":347},[53,2009,748],{"class":74},[53,2011,2012],{"class":55,"line":359},[53,2013,852],{"emptyLinePlaceholder":851},[53,2015,2016,2018,2020,2023,2026,2028,2030,2033,2036,2038],{"class":55,"line":365},[53,2017,60],{"class":59},[53,2019,63],{"class":59},[53,2021,2022],{"class":59}," void",[53,2024,2025],{"class":70}," main",[53,2027,75],{"class":74},[53,2029,78],{"class":66},[53,2031,2032],{"class":74},"[]",[53,2034,2035],{"class":81}," args",[53,2037,94],{"class":74},[53,2039,97],{"class":74},[53,2041,2042,2044,2047,2049,2051],{"class":55,"line":393},[53,2043,801],{"class":66},[53,2045,2046],{"class":81}," a ",[53,2048,166],{"class":165},[53,2050,333],{"class":109},[53,2052,172],{"class":85},[53,2054,2055,2057,2060,2062,2064],{"class":55,"line":416},[53,2056,801],{"class":66},[53,2058,2059],{"class":81}," b ",[53,2061,166],{"class":165},[53,2063,253],{"class":109},[53,2065,172],{"class":85},[53,2067,2068,2071,2073,2076,2078,2081,2083,2086,2088,2090,2092,2094],{"class":55,"line":427},[53,2069,2070],{"class":139},"    System",[53,2072,113],{"class":85},[53,2074,2075],{"class":139},"out",[53,2077,113],{"class":85},[53,2079,2080],{"class":70},"println",[53,2082,75],{"class":85},[53,2084,2085],{"class":70},"getStringByStrategy",[53,2087,75],{"class":85},[53,2089,140],{"class":121},[53,2091,86],{"class":85},[53,2093,91],{"class":121},[53,2095,2096],{"class":85},"));\n",[53,2098,2099],{"class":55,"line":454},[53,2100,748],{"class":74},[2102,2103,2104,2107],"blockquote",{},[10,2105,2106],{},"我的博客即将同步至腾讯云开发者社区，邀请大家一同入驻：",[10,2108,2109],{},[140,2110,2114],{"href":2111,"rel":2112},"https:\u002F\u002Fcloud.tencent.com\u002Fdeveloper\u002Fsupport-plan?invite_code=1uukf1hgh3yq0",[2113],"nofollow","https:\u002F\u002Fcloud.tencent.com\u002Fdeveloper\u002Fsupport-plan?invitecode=1uukf1hgh3yq0",[2116,2117,2118],"style",{},"html pre.shiki code .sSWcl, html code.shiki .sSWcl{--shiki-default:#8839EF;--shiki-dark:#C678DD}html pre.shiki code .sPahJ, html code.shiki .sPahJ{--shiki-default:#8839EF;--shiki-dark:#E5C07B}html pre.shiki code .seVD2, html code.shiki .seVD2{--shiki-default:#1E66F5;--shiki-default-font-style:italic;--shiki-dark:#61AFEF;--shiki-dark-font-style:inherit}html pre.shiki code .syBBb, html code.shiki .syBBb{--shiki-default:#7C7F93;--shiki-dark:#E06C75}html pre.shiki code .sIGPt, html code.shiki .sIGPt{--shiki-default:#4C4F69;--shiki-dark:#E06C75}html pre.shiki code .sgT6j, html code.shiki .sgT6j{--shiki-default:#7C7F93;--shiki-dark:#ABB2BF}html pre.shiki code .sw_MA, html code.shiki .sw_MA{--shiki-default:#40A02B;--shiki-dark:#98C379}html pre.shiki code .sa2x1, html code.shiki .sa2x1{--shiki-default:#4C4F69;--shiki-dark:#ABB2BF}html pre.shiki code .szf8G, html code.shiki .szf8G{--shiki-default:#4C4F69;--shiki-dark:#E5C07B}html pre.shiki code .sqgB4, html code.shiki .sqgB4{--shiki-default:#179299;--shiki-dark:#56B6C2}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .skYY2, html code.shiki .skYY2{--shiki-default:#7C7F93;--shiki-default-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic}html pre.shiki code .sIkkJ, html code.shiki .sIkkJ{--shiki-default:#DF8E1D;--shiki-default-font-style:italic;--shiki-dark:#E5C07B;--shiki-dark-font-style:inherit}html pre.shiki code .sddMY, html code.shiki .sddMY{--shiki-default:#E64553;--shiki-default-font-style:italic;--shiki-dark:#E06C75;--shiki-dark-font-style:italic}html pre.shiki code .sGc2n, html code.shiki .sGc2n{--shiki-default:#7C7F93;--shiki-dark:#E5C07B}html pre.shiki code .szsGz, html code.shiki .szsGz{--shiki-default:#8839EF;--shiki-default-font-style:inherit;--shiki-dark:#C678DD;--shiki-dark-font-style:italic}html pre.shiki code .slb6Y, html code.shiki .slb6Y{--shiki-default:#FE640B;--shiki-dark:#ABB2BF}html pre.shiki code .saiVi, html code.shiki .saiVi{--shiki-default:#FE640B;--shiki-dark:#E5C07B}html pre.shiki code .sFiMs, html code.shiki .sFiMs{--shiki-default:#D20F39;--shiki-dark:#D19A66}",{"title":48,"searchDepth":159,"depth":159,"links":2120},[2121,2122],{"id":21,"depth":100,"text":21},{"id":754,"depth":100,"text":754,"children":2123},[2124,2125,2126,2127],{"id":758,"depth":131,"text":758},{"id":821,"depth":131,"text":821},{"id":1407,"depth":131,"text":1407},{"id":1851,"depth":131,"text":1851},[2129],"开发","2025-10-16","本文介绍了如何使用策略模式优化多重嵌套的条件判断逻辑。原始代码通过多层if-else处理不同b值下对字符串a的匹配规则，导致结构复杂、难以维护。作者提出采用策略模式进行重构：首先定义统一的策略接口GetStringStrategy，然后为每种b值（空字符串、\"0\"、\"1\"）分别实现具体的策略类，将内层判断逻辑封装其中；接着通过工厂类GetStringStrategyFactory统一管理策略实例，根据b值动态返回对应策略；最终调用方只需通过工厂获取策略并执行，无需关心具体实现。该方法有效解耦了条件判断逻辑，提升了代码的可读性、可维护性和扩展性。",false,"md","https:\u002F\u002Ffile.dhbxs.top\u002F2025\u002F10\u002Flcbzyhed.webp",{"uuid":2136,"slots":2137},"b0439536-aae7-41c5-8046-c5a6413e94b6",{},"\u002Fposts\u002Fb0439536",null,{"text":2141,"minutes":2142,"time":2143,"words":2144},"6 min read",5.595,335700,1119,{"title":5,"description":2131},{"loc":2138},"posts\u002F2025\u002F策略模式优化多重判断",[2149,2150],"设计模式","Java","tech","HnNs2oANTrkexKs9kYqL9ryDD0RJn0ZThbA9pR7Wm5E",[2154,2159],{"title":2155,"path":2156,"stem":2157,"date":2158,"type":2151,"children":-1},"Hadoop集群搭建（1主2从）","\u002Fposts\u002Fd06540f2","posts\u002F2024\u002FHadoop集群搭建（1主2从）","2024-04-18 06:26:21",{"title":2160,"path":2161,"stem":2162,"date":2163,"type":2151,"children":-1},"基于CNN深度学习网络的交通标志识别","\u002Fposts\u002F4dCtXKfh","posts\u002F2025\u002F基于CNN深度学习网络的交通标志识别","2025-11-01 12:37:11",1775740823831]