銆婅璁℃ā寮忛潰璇曞皬鐐掋€嬩笟鍔″満鏅腑鐨勭瓥鐣ヤ笌宸ュ巶妯″紡鏇挎崲澶嶆潅ifelse鎴戞槸鑳栧摜锛屼竴涓笉涓撲笟鐨勯潰璇曞畼锛佹垜鏄洤鍥э紝涓€涓鍦ㄧН鏋佹壘宸ヤ綔鐨勮彍楦燂紒鍥у洤璇达細灏忕櫧闈㈣瘯鏈€澶х殑鎭愭儳灏辨槸闈㈣瘯瀹樼殑鐭ヨ瘑鐐瑰お绗肩粺锛屼笉鑳藉揩閫熷畾浣嶉噸鐐癸紒锛侊紒鏈湡涓昏闈㈣瘯鑰冪偣鏄浣曞湪涓氬姟鍦烘櫙涓娇鐢ㄨ璁℃ā寮忔浛浠e鏉傜殑ifelse锛烿IP绫诲瀷importjava.util.Objects;/***@author:娆㈣繋鍏虫敞閲庣尓璐﹀彿锛氬洤閭h偉浜?@date:2021/12/16*@email:jiongmefeishi@163.com**浼氬憳type*/publicenumVIPEnums{GOLD(1,"閲戝崱浼氬憳"),STAR(2,"閽荤煶浼氬憳"),SPORTS(3,"杩愬姩浼氬憳"),FUN_VIP(4,"FUN浼氬憳");绉佹湁鏈€缁堜唬鐮侊紱绉佷汉鏈€缁堝瓧绗︿覆鎻忚堪锛沄IPEnums(intcode,Stringdesc){this.code=code;杩欎釜.desc=desc;}publicintgetCode(){杩斿洖浠g爜锛泒publicStringgetDesc(){杩斿洖鎻忚堪锛泒publicstaticVIPEnumsgetByCode(Integercode){for(VIPEnumss:VIPEnums.values()){if(Objects.equals(s.getCode(),code)){returns;}}杩斿洖绌哄€硷紱}}VIP瀹炰綋/***@浣滆€咃細娆㈣繋鍏虫敞鍠備俊閲庣尓璐﹀彿锛氬洤濂借偉鐨勪笢瑗?@date:2021/12/16*@email:jiongmeifeishi@163.com**vip*/publicclassVIP{privateVIPEnumsvipType;//TODOVIP鍏朵粬灞炴€d,name...publicVIP(){}publicVIP(VIPEnumsvipType){this.vipType=vipType;}publicVIPEnumsgetVipType(){returnvipType;}publicvoidsetVipType(VIPEnumsvipType){this.vipType=vipType;}}if-elsemode//if-elsemodepublicclassApp{publicstaticvoidmain(String[]args){//閲戠墝浼氬憳VIPvip=newVIP(VIPEnums.GOLD);if(vip.getVipType().getCode()==VIPEnums.GOLD.getCode()){//TODO榛勯噾浼氬憳绂忓埄}elseif(vip.getVipType().getCode()==VIPEnums.STAR.getCode()){//TODO鏄熼捇浼氬憳鏉冪泭}elseif(vip.getVipType().getCode()==VIPEnums.SPORTS.getCode()){//TODO浣撹偛浼氬憳鏉冪泭}elseif(vip.getVipType().getCode()==VIPEnums.FUN_VIP.getCode()){//TODOFUN浼氬憳绂忓埄}else{//TODO鍏朵粬浼氬憳...}}}鏀荤暐妯″紡VIP鏀荤暐鐣岄潰/***@author:Huan娆㈣繋鍏虫敞灏忕尓璐﹀彿锛氬洤鑲ヨ偉浜?@date:2021/12/16*@email:jiongmefeishi@163.com*VIP鏀荤暐鐣岄潰*/publicinterfaceVIPStrategy{//VIP鎷ユ湁鐨勬潈鐩妚oidequity();}绛栫暐鎺ュ彛鍏蜂綋瀹炵幇绫?閲戠墝浼氬憳/***@浣滆€咃細娆㈣繋鍏虫敞閲庣尓鍙凤細鍥ц偉鑲ヤ簨*@date:2021/12/16*@email:jiongmefeishi@163.com**strategy鎺ュ彛鍏蜂綋瀹炵幇绫?閲戠墝浼氬憳*/publicclassGoldVIPStrategyImplimplementsVIPStrategy{@Overridepublicvoidequity(){//TODO鍏蜂綋閲戠墝浼氬憳鎷ユ湁鐨勬潈鐩妢}绛栫暐鎺ュ彛鍏蜂綋瀹炵幇绫?鏄熼捇浼氬憳/***@author:娆㈣繋鍏虫敞閲庣尓鍙凤細鍥ц偉鑲ヤ簨*@date:2021/12/16*@email:jiongmefeishi@163.com**绛栫暐鎺ュ彛鍏蜂綋瀹炵幇绫?鏄熼捇浼氬憳*/publicclassStarVIPStrategyImplimplementsVIPStrategy{@Overridepublicvoidequity(){//TODO鏄熼捇浼氬憳鍏蜂綋鏉冪泭}}绛栫暐鎺ュ彛鍏蜂綋瀹炵幇class-sportsmembers/***@author:娆㈣繋鍠傜尓鍙?鍥уソ鑳栧晩*@date:2021/12/16*@email:jiongmefeishi@163.com**绛栫暐鎺ュ彛鐨勫叿浣撳疄鐜扮被-浣撹偛浼氬憳*/publicclassSportsVIPStrategyImplimplementsVIPStrategy{@Overridepublicvoidequity(){//TODO浣撹偛浼氬憳鍏蜂綋鏉冪泭}}绛栫暐鎺ュ彛鍏蜂綋瀹炵幇绫?FUN浼氬憳/***@浣滆€咃細娆㈣繋鍏虫敞閲庣尓鍙凤細鍥уソ鑲ョ殑涓滆タ*@date:2021/12/16*@鐢靛瓙閭欢锛歫iongmefeishi@163.com**绛栫暐鎺ュ彛鐨勫叿浣撳疄鐜扮被-FUN浼氬憳*/publicclassFunVIPStrategyImplimplementsVIPStrategy{@Overridepublicvoidequity(){//FUN浼氬憳TODO鍏蜂綋鏉冪泭}}绛栫暐涓婁笅鏂囩被/***@浣滆€咃細娆㈣繋鍏虫敞鍠傜尓璐﹀彿锛氬洤鑲栬偉浜?@date:2021/12/16*@email:jiongmefeishi@163.com**绛栫暐涓婁笅鏂囩被锛坴ip绛栫暐鎺ュ彛鎸佹湁鑰咃級*/鍏叡绫籚IPStrategyContext{绉佷汉VIPStrategyvipStrategy;//璁剧疆VIP绛栫暐publicvoidsetVipStrategy(VIPStrategyvipStrategy){this.vipStrategy=vipStrategy;}//鎵цVIP鏉冪泭publicvoidhandle(){if(vipStrategy!=null){vipStrategy.equity();}}}绛栫暐宸ュ巶/***@浣滆€咃細娆㈣繋鍏虫敞閲庣尓璐﹀彿锛氬洤鑲ヨ偉浜?@date:2021/12/16*@email:jiongmefeishi@163.com**VIP绛栫暐宸ュ巶*/publicclassVIPStrategyFactory{privateVIPStrategyFactory(){}publicstaticVIPStrategygetVipStrategy(VIPvip){VIPStrategyvipStrategy=null;if(vip.getVipType().getCode()==VIPEnums.GOLD.getCode()){//榛勯噾浼氬憳绛栫暐褰撳墠绫籿ipStrategy=newGoldVIPStrategyImpl();}elseif(vip.getVipType().getCode()==VIPEnums.STAR.getCode()){//鏄熺骇VIP绛栫暐瀹炵幇绫籿ipStrategy=newStarVIPStrategyImpl();}elseif(vip.getVipType().getCode()==VIPEnums.SPORTS.getCode()){//浣撹偛浼氬憳绛栫暐瀹炵幇绫籿ipStrategy=newSportsVIPStrategyImpl();}elseif(vip.getVipType().getCode()==VIPEnums.FUN_VIP.getCode()){//FUN浼氬憳绛栫暐瀹炵幇绫籿ipStrategy=newFunVIPStrategyImpl();}else{//鍏朵粬鎴愬憳...}returnvipStrategy;}}妯℃嫙浼氬憳鐧诲綍棰嗗彇绂忓埄/***@浣滆€咃細娆㈣繋鍏虫敞鍠備俊閲庣尓璐﹀彿锛氬洤閭h偉浜?@date:2021/12/16*@email:jiongmefeishi@163.com**妯℃嫙浼氬憳鐧诲綍鑾峰彇绂忓埄*/publicclassTestStrategy{publicstaticvoidmain(String[]args){//榛勯噾浼氬憳VIPvip=newVIP(VIPEnums.GOLD);//绛栫暐涓婁笅鏂囷紝鎵ц鑰匳IPStrategyContextcontext=newVIPStrategyContext();//鏍规嵁浼氬憳绫诲瀷锛岃幏鍙栦細鍛樺叿浣撶瓥鐣ワ紝鑾峰彇榛勯噾浼氬憳StrategyVIPSt璐圭巼绛栫暐=VIPStrategyFactory.getVipStrategy(vip);//缁戝畾鍒版墽琛屽櫒context.setVipStrategy(strategy);//鎵ц榛勯噾浼氬憳绛栫暐锛岄粍閲戞潈鐩奵ontext.handle();}}鎴戜滑鐭ラ亾锛岀瓥鐣ユā寮忔湰韬殑璁捐鐩殑灏辨槸涓轰簡灏佽涓€绯诲垪鐨勭畻娉曘€傝繖浜涚畻娉曞叿鏈夊叡鎬э紝鍙互鐩镐簰鏇夸唬銆傜畻娉曠殑鍙樺寲鐙珛浜庝娇鐢ㄥ畠鐨勫鎴风銆傚鎴风涓嶉渶瑕佷簡瑙g浉鍏崇畻娉曠殑鍏蜂綋瀹炵幇銆傚鎴风鍙緷璧栫瓥鐣ユ帴鍙o紝閫氳繃浣跨敤绛栫暐妯″紡鍜屽伐鍘傛ā寮忕殑缁撳悎锛屾槸涓嶆槸鎰熻鍙橀珮澶т笂浜嗭紵馃槆褰撶劧锛屾渶閲嶈鐨勬槸绋嬪簭鐨勬墿灞曟洿鏂逛究锛屾洿绗﹀悎寮€闂師鍒欙紝瀵规墿灞曞紑鏀撅紝瀵逛慨鏀瑰叧闂€傛棤璁哄鍔犲灏戞柊绫诲瀷鐨勪細鍛橈紝澶у鍙渶缁ф壙绛栫暐鎺ュ彛鍗冲彲瀹炵幇鏂颁細鍛樺簲鏈夌殑鏉冪泭銆傛敞鎰忥紝铏界劧鏈夊埄浜庢墿灞曪紝浣嗙瓥鐣ユā寮忕殑缂虹偣涔熷緢鏄庢樉銆傜瓥鐣ュ伐鍘傚湪鍒涘缓鍏蜂綋鐨勭瓥鐣ュ疄鐜扮被鐨勬椂鍊欙紝杩樻槸鍐欎簡寰堝if-else鏉ュ仛鍒ゆ柇銆傚鍥撅紝鏈夊皬浼欎即璇磋繖涓拰娌$敤绛栫暐妯″紡鍜屽伐鍘傛ā寮忓ソ鍍忓緢鍍忥紵锛燂紵鎻愬彇涓€涓柟娉曟垨鑰呭皝瑁呮垚涓€涓璞¤皟鐢ㄤ笉鏄洿绠€鍗曞悧锛燂紵锛熸帴涓嬫潵璇翠竴涓嬪浣曚紭鍖栫瓥鐣ュ伐鍘傘€傞鍏堬紝鎴戜滑鐨勫伐鍘傛槸鏍规嵁褰撳墠浼犲叆鐢ㄦ埛鐨勪細鍛樼被鍨嬨€傚垽鏂悗杩斿洖瀵瑰簲鐨勭瓥鐣ュ疄鐜扮被銆傞偅涔堟垜浠氨鍙互浣跨敤闆嗗悎鏉ュ瓨鏀惧疄鐜扮被浜嗐€傛垚鍛樿祫鏍肩被鍨嬬敤浣滃皢鎵€鏈夋垚鍛樿祫鏍肩瓥鐣ユ敞鍐屽埌鍦板浘鐨勯敭銆備腑闂淬€傞渶瑕佹敞鎰忕殑鏄紝鏃ュ父寮€鍙戦兘鏄熀浜嶴pring鏉ヨ繘琛宐ean绠$悊鐨勩€傚綋鐒讹紝棣栧厛闇€瑕佸垱寤虹殑绛栫暐绫婚兘甯屾湜鐢盨pring鍔ㄦ€佹墭绠★紝鑰屼笉鏄垜浠嚜宸变竴涓竴涓殑鏂板缓瀹炰緥銆傞棶棰樻潵浜嗭紝濡備綍閫氳繃spring瀹炵幇绛栫暐绫荤殑鎵樼娉ㄥ唽鍛紵Spring鎻愪緵鐨処nitializingBean鎺ュ彛鎻愪緵浜嗗Bean杩涜灞炴€у垵濮嬪寲鍚庣殑澶勭悊鏂规硶銆傚畠鍙寘鎷琣fterPropertiesSet鏂规硶銆備换浣曠户鎵夸簡杩欎釜鎺ュ彛鐨勭被锛屽湪bean鐨勫睘鎬у垵濮嬪寲涔嬪悗閮戒細鎵ц杩欎釜鏂规硶銆傛垜浠€氳繃杩欎釜鏂规硶灏哠pring閫氳繃IOC鍒涘缓鐨凚ean娉ㄥ唽鍒癕ap涓€傛敼閫犵瓥鐣ュ伐鍘俰mportorg.example.model.VIP;importorg.example.strategy.VIPStrategy;importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;/***@author:娆㈣繋鍠備俊鐚狽umber:鍥ц偉鑲ヤ簨*@date:2021/12/16*@email:jiongmefeishi@163.com*
*VIPStrategyFactory*/publicclassVIPStrategyFactory{//瀛樺偍绛栫暐绫诲疄渚媝ublicstaticMap