精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CTO寫的代碼,真是絕了!

新聞
本文通過一個簡單的例子來展示如何通過枚舉巧妙地干掉 if-else,使代碼看起來更佳優雅。

 最近我看到某廠的 CTO 寫的代碼,被全網吐槽,我們一起來欣賞一下!

[[338627]]
圖片來自 Pexels

 

本文通過一個簡單的例子來展示如何通過枚舉巧妙地干掉 if-else,使代碼看起來更佳優雅。

場景:當我們接收到一些數據需要對其進行處理時,由于它們來自于不同的渠道(如:騰訊,頭條),不同渠道所需的處理方式不同,下面我們寫一個簡單 Demo 來實現該的場景。

解決思路

①首先構建一個 GeneralChannelRule 基礎規則抽象類,定義一個抽象方法process(),不同的渠道都需要實現該抽象方法。

  1. public abstract class GeneralChannelRule { 
  2.  public abstract void process(); 

②編寫一個騰訊的規則類,定義具體對于騰訊渠道數據的處理邏輯。

代碼如下:

  1. public class TencentChannelRule extends GeneralChannelRule 
  2.    @Override 
  3.     public void process() { 
  4.         // Tencent處理邏輯 
  5.     } 

③編寫一個頭條的規則類,定義具體對于頭條數據的處理邏輯。

代碼如下:

  1. public class TouTiaoChannelRule extends GeneralChannelRule 
  2.    @Override 
  3.     public void process() { 
  4.         // TouTiao處理邏輯 
  5.     } 

④建立一個簡單的枚舉類。

代碼如下:

  1. public enum ChannelRuleEnum { 
  2.     /** 
  3.      * 頭條 
  4.      */ 
  5.     TOUTIAO("TOUTIAO"), 
  6.     /** 
  7.      * 騰訊 
  8.      */ 
  9.     TENCENT("TENCENT"), 
  10.     ; 
  11.   .... 

⑤使用規則對數據進行處理。

代碼如下:

  1. public static void main(String[] args) { 
  2.         //這里我們模擬接收到的數據,其渠道為為TOUTIAO,來自頭條的數據 
  3.         String sign = "TOUTIAO"
  4.         GeneralChannelRule rule
  5.         //根據對應渠道獲取對應的具體規則實現類 
  6.         if (ChannelRuleEnum.TENCENT.code.equals(sign)) { 
  7.             rule = new TencentChannelRule(); 
  8.         } else if (ChannelRuleEnum.TOUTIAO.code.equals(sign)) { 
  9.             rule = new TouTiaoChannelRule(); 
  10.         } else { 
  11.             //匹配不到 
  12.         } 
  13.         //執行 
  14.         rule.process(); 
  15.     } 

解析:如果通過上面的方式,則存在則兩個缺點。

a.當我們需要新增新的渠道的時候,需要對 main 方法中的邏輯進行修改調整。

這違背了設計模式中的開放封閉規則。開放封閉原則的核心的思想是軟件實體是可擴展,而不可修改的。也就是說,對擴展是開放的,而對修改是封閉的。

b.新增渠道后,修改代碼會產生大量的 if else,不太優雅。

為了解決以上的兩個問題,我們可以借助枚舉類來巧妙優化。

新的思路

①下面我們調整一下枚舉類,增加一個 GeneralChannelRule 屬性,并且給對應渠道構建對應的 GeneralChannelRule 實現類,新增一個 match() 匹配方法。

代碼如下:

  1. public enum ChannelRuleEnum { 
  2.  
  3.     /** 
  4.      * 頭條 
  5.      */ 
  6.     TOUTIAO("TOUTIAO",new TouTiaoChannelRule()), 
  7.     /** 
  8.      * 騰訊 
  9.      */ 
  10.     TENCENT("TENCENT",new TencentChannelRule()), 
  11.     ; 
  12.  
  13.     public String name
  14.  
  15.     public GeneralChannelRule channel; 
  16.  
  17.     ChannelRuleEnum(String name, GeneralChannelRule channel) { 
  18.         this.name = name
  19.         this.channel = channel; 
  20.     } 
  21.  
  22.   //匹配 
  23.     public static ChannelRuleEnum match(String name){ 
  24.         ChannelRuleEnum[] values = ChannelRuleEnum.values(); 
  25.         for (ChannelRuleEnum value : values) { 
  26.             if(value.name.equals(name)){ 
  27.                 return value; 
  28.             } 
  29.         } 
  30.         return null
  31.     } 
  32.     public String getName() { 
  33.         return name
  34.     } 
  35.  
  36.     public GeneralChannelRule getChannel() { 
  37.         return channel; 
  38.     } 

②改寫程序,代碼如下:

  1. public static void main(String[] args) { 
  2.         String sign = "TOUTIAO"
  3.         ChannelRuleEnum channelRule = ChannelRuleEnum.match(sign); 
  4.         GeneralChannelRule rule = channelRule.channel; 
  5.         rule.process(sign); 
  6.     } 

解析:通過使用枚舉類,在枚舉中將 key 與規則具體實現進行綁定。

通過改變:

  • 可以減少 if-else 使得代碼更加優雅。
  • 如果需要新增渠道,我們只需要在編寫具體規則實現類并繼承 GeneralChannelRule 抽象類,并在枚舉類中新增的枚舉,而不需要改動到原先的任何代碼。這符合了開發封閉原則。

最后

以上是通過枚舉來巧妙干掉 if-else 的方案,對于減少 if-else 還有很多有趣的解決方案(如:狀態設計模式等),感興趣的朋友去查閱相關的資料。

作者:聚 IT

編輯:陶家龍

出處:toutiao.com/i6847406631983153672

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-10-10 09:09:21

CTOCRUD設計

2021-07-20 06:37:33

CTO代碼程序員

2021-03-02 20:01:08

寫代碼開發工具idea

2018-09-30 09:36:58

CTO代碼程序員

2020-10-28 11:40:08

MySQL索引數據庫

2021-10-18 08:15:12

CTO代碼裁員

2021-03-01 08:57:41

CTO代碼架構師

2021-12-29 07:44:51

Proto代碼微服務

2012-07-03 09:59:03

程序員

2021-04-21 10:27:17

JavaScript代碼項目

2021-10-20 13:59:38

技術資訊

2021-02-25 11:30:17

代碼開發技術

2020-11-03 11:14:38

Java方法代碼

2021-08-09 23:53:50

排序中國

2020-09-22 14:51:41

數據類型變量

2016-08-30 18:14:43

管理51CTO技術

2014-11-11 14:52:28

程序員工程師

2019-07-10 08:56:58

代碼互聯網網絡

2014-02-28 13:46:35

Angular代碼

2020-03-12 07:42:49

代碼程序員
點贊
收藏

51CTO技術棧公眾號

欧美肥老太太性生活| 高清不卡av| 成人小视频在线| 高清在线视频日韩欧美| 黄色录像a级片| 国产91亚洲精品久久久| 亚洲精品国产成人久久av盗摄| 成人91免费视频| 青青国产在线观看| 欧美在线观看视频一区| 91精品国产综合久久久久久久| 男人c女人视频| 欧美亚洲日本| 极品美女销魂一区二区三区免费| 久久久久久久久电影| 3d动漫精品啪啪一区二区下载 | 按摩亚洲人久久| 久久久久无码国产精品一区李宗瑞 | 99国内精品久久久久| 亚洲成a人片在线不卡一二三区| 日本一区二区高清视频| 亚洲国产福利视频| 蜜桃在线一区二区三区| 97色在线播放视频| 性色av无码久久一区二区三区| 牛牛影视一区二区三区免费看| 欧美性大战久久久久久久蜜臀| 美女av免费观看| 日本中文字幕在线播放| 99久久久免费精品国产一区二区| 成人亲热视频网站| 欧美超碰在线观看| 尤物在线精品| 色综合视频网站| 精品熟妇无码av免费久久| 色爱av综合网| 精品国产乱码久久久久久闺蜜| 做a视频在线观看| 欧美三区四区| 黑人欧美xxxx| 欧美视频在线观看视频| av在线网址观看| 国产精品入口麻豆九色| 欧美性色黄大片人与善| 午夜视频在线免费播放| 成人午夜视频福利| yellow视频在线观看一区二区| 岳乳丰满一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成av人在线观看| 日本一二三区视频在线| 日本激情视频在线观看| 中文字幕不卡在线播放| 日本高清一区| 国产福利在线观看| 欧美激情中文不卡| 丝袜足脚交91精品| 成人免费在线电影| 亚洲国产激情av| 日产精品高清视频免费| 国产综合在线观看| 国产精品日日摸夜夜摸av| 亚洲欧美影院| 久久黄色美女电影| 一个色综合av| 国产毛片久久久久久国产毛片| 男女羞羞视频在线观看| 亚洲午夜久久久| 自拍日韩亚洲一区在线| 性爽视频在线| 欧美性色黄大片| 国产一级片自拍| 99精品美女视频在线观看热舞| 91精品视频网| 久久性爱视频网站| 美女网站一区| 日日噜噜噜夜夜爽亚洲精品| 尤物在线免费视频| 欧美日韩午夜| 国产69久久精品成人| 久久亚洲精品石原莉奈| 捆绑紧缚一区二区三区视频| 亚洲自拍偷拍在线| 国精产品一品二品国精品69xx | av蓝导航精品导航| 图片区 小说区 区 亚洲五月| 26uuu久久天堂性欧美| 日韩精品欧美专区| 少妇视频在线| 欧美性xxxx| 色一情一区二区| 成人午夜网址| 国产一区二区三区丝袜| 国产探花在线免费观看| 国产日韩一区| 国产综合色香蕉精品| 亚洲毛片在线播放| 国产午夜精品在线观看| 4444在线观看| 欧美momandson| 日韩一区二区三区在线| 精品人妻一区二区三区香蕉| 国产精品久久天天影视| 97视频免费看| 国产日韩欧美视频在线观看| 91片在线免费观看| 99精品一级欧美片免费播放| 成人短视频app| 日韩一级在线观看| 日韩一级av毛片| 激情另类综合| 日本高清不卡在线| 亚洲AV无码一区二区三区性 | av人人综合网| 欧美日韩一级二级三级| 黄色性生活一级片| 欧美激情91| 国产精品欧美一区二区| 手机福利小视频在线播放| 亚洲免费观看高清完整版在线观看熊 | 999国产精品视频| 欧美一区二区三区精品电影| 99精品在线视频观看| 欧美激情一二三区| 激情综合在线观看| 亚洲超碰在线观看| 久久久国产一区二区| 激情视频网站在线观看| 成人av资源站| 97超碰国产精品| 白嫩亚洲一区二区三区| 中文字幕日韩av综合精品| 久久精品视频1| 不卡视频在线看| 国产又粗又猛又爽又黄的网站| 久久久精品一区二区毛片免费看| 亚洲毛片在线观看.| 国产精品.www| 国产宾馆实践打屁股91| 国产三级中文字幕| 亚洲最大的免费视频网站| 一区二区三区四区在线观看视频 | 久久精品视频观看| 欧美剧在线免费观看网站 | 色呦呦中文字幕| 一区二区三区日韩在线观看| 日韩精品在线播放视频| 一精品久久久| 3d动漫啪啪精品一区二区免费| 免费网站免费进入在线| 欧美美女一区二区| 啪啪一区二区三区| 国产综合色精品一区二区三区| 久久免费看毛片| 亚洲免费一区| 久久综合网hezyo| 国产男女猛烈无遮挡| 日韩码欧中文字| 91视频这里只有精品| 久久久久久久久久久9不雅视频| 国产男人精品视频| 久草免费在线| 日韩欧美精品在线| 国产大片中文字幕| 91毛片在线观看| 色综合av综合无码综合网站| 美女毛片一区二区三区四区最新中文字幕亚洲 | 日本污视频网站| 精品在线一区二区| 九九久久九九久久| 欧美成人专区| 国产精品wwww| 美女隐私在线观看| 精品欧美一区二区久久 | 黄色成人在线网站| 精品国产乱码久久久久久郑州公司 | 亚洲精华一区二区三区| 中文乱码免费一区二区三区下载| 欧美多人乱p欧美4p久久| 国产91绿帽单男绿奴| 欧美日韩免费一区| 久操视频在线观看免费| 韩国v欧美v亚洲v日本v| 欧美国产综合在线| 国产精选一区| 成人免费福利在线| a级片免费在线观看| 亚洲一区二区国产| 国产精品-色哟哟| 亚洲高清视频中文字幕| 国产美女精品久久| 国产一区二三区| 免费 成 人 黄 色| 日本女优一区| 国产精品嫩草在线观看| 久久亚洲精品爱爱| 美女av一区二区三区| 午夜小视频在线播放| 欧美日韩午夜在线视频| 久久精品美女视频| 国产精品三级视频| 国产伦精品一区二区三区妓女| 久久国产精品72免费观看| 国产天堂视频在线观看| 欧美日韩在线观看视频小说| 国产精品一区二区三区观看| 国产一区精品福利| 88国产精品欧美一区二区三区| 欧美激情免费| 亚洲欧美在线x视频| 国产人妖一区二区| 欧美系列亚洲系列| 麻豆久久久久久久久久| 亚洲欧美激情一区二区| 亚洲av熟女国产一区二区性色 | 国产精品一区二区久久精品| 97天天综合网| 久久国产精品久久久久久久久久| 九色视频在线播放| 亚洲第一国产精品| 国产999久久久| 欧美日韩不卡在线| 欧美日韩a v| 欧美日韩亚洲网| 精品午夜福利在线观看| 亚洲图片激情小说| 影音先锋男人资源在线观看| 久久综合中文字幕| 99精品一区二区三区无码吞精| 国内成人精品2018免费看| 别急慢慢来1978如如2| 国产欧美一区二区三区国产幕精品| 99中文字幕在线观看| 成人三级视频| 色女人综合av| 奇米影视777在线欧美电影观看| 亚洲xxxxx电影| 欧美亚洲福利| 国产欧美亚洲视频| 国外成人福利视频| 国产精品私拍pans大尺度在线| 欧美大片免费观看网址| 欧美伊久线香蕉线新在线| 美女扒开腿让男人桶爽久久软| 久久久久久综合网天天| 国产不卡在线| 久久av中文字幕| bestiality新另类大全| 久久午夜a级毛片| 免费a级在线播放| 久久精品久久久久| 超碰在线caoporen| 久久99精品久久久久久青青91| 在线观看三级视频| 久久久噜噜噜久久久| 变态调教一区二区三区| 国内精品美女av在线播放| 黄色在线免费观看网站| 全球成人中文在线| 电影久久久久久| 国产欧美精品xxxx另类| 国产一区二区| 懂色中文一区二区三区在线视频| 国产精品任我爽爆在线播放| 精品亚洲欧美日韩| 成人vr资源| 日韩视频在线免费播放| 欧美99在线视频观看| 欧美久久在线观看| 亚洲专区在线| 在线免费观看av的网站| 国产乱人伦精品一区二区在线观看 | 精品97人妻无码中文永久在线| 亚洲一级片在线观看| 欧美三日本三级少妇99| 在线区一区二视频| 国产乱淫片视频| 精品久久国产字幕高潮| 欧美精品久久久久久久久久丰满| 中文字幕av日韩| 欧洲性视频在线播放| 2019亚洲日韩新视频| 成人av色网站| 91精品国产综合久久香蕉922| 欧美三级一区| 欧美中日韩一区二区三区| 日韩啪啪电影网| 国产成人永久免费视频| 日韩激情中文字幕| 又色又爽又黄18网站| 国产欧美一区二区在线| 欧美日韩人妻精品一区二区三区| 欧美日韩国产区| 伊人久久成人网| 亚洲成人免费网站| 日韩在线资源| 国产91精品高潮白浆喷水| 在线观看欧美| 欧美亚洲另类久久综合| 欧美一区影院| 亚洲欧美另类动漫| 99久久国产综合精品女不卡| 老司机深夜福利网站| 福利视频一区二区| 国产福利资源在线| 在线播放日韩专区| 激情黄产视频在线免费观看| 国产一区欧美二区三区| 思热99re视热频这里只精品| 四虎精品欧美一区二区免费| 久久亚洲电影| 又黄又爽的网站| 亚洲男帅同性gay1069| 波多野结衣午夜| 亚洲黄色在线看| av网站大全在线| 国产精品自拍偷拍视频| 妖精视频一区二区三区| 青草视频在线观看视频| 国产一区二区三区在线观看免费视频| 精品无码人妻一区| 亚洲一区二区四区蜜桃| 国产男男gay网站| 色婷婷综合久久久久| 中日韩脚交footjobhd| 国产精品一区二区三区在线 | 欧美电影院免费观看| 无遮挡亚洲一区| 六月婷婷一区| 免费成人深夜夜行p站| 亚洲成人动漫一区| 国产福利视频导航| 久久国产天堂福利天堂| 高清久久一区| 国产一二三四五| 国产一区二区三区四区五区美女| 日韩av片在线免费观看| 欧美性受xxxx黑人xyx性爽| 久草在线青青草| 国产成人精品视频在线| 久久99精品久久久久久园产越南| 鲁一鲁一鲁一鲁一色| jlzzjlzz亚洲日本少妇| 日本熟妇一区二区| 亚洲成人精品在线| 日韩电影毛片| 久久综合狠狠综合久久综青草| 99riav1国产精品视频| 国产一卡二卡三卡四卡| 亚洲成av人片在线| 婷婷五月综合激情| 国产91精品不卡视频| 精品一区三区| 91香蕉视频导航| 18欧美乱大交hd1984| 999免费视频| 欧美国产中文字幕| 日本欧美高清| 欧美成人精品欧美一级乱| 久久毛片高清国产| 中文字幕一二三四| 久久黄色av网站| 91精品导航| 男人天堂1024| 欧美经典三级视频一区二区三区| 中文字幕视频一区二区| 久久久999精品免费| 在线观看视频一区二区三区 | 日本一级特级毛片视频| 日韩精品在线一区| 华人av在线| 视频一区二区三| 国产精品资源在线观看| 久久午夜无码鲁丝片午夜精品| 亚洲精品动漫久久久久| 2018国产精品| 一区二区三区四区中文字幕| 黄色一级大片在线免费看国产一| 欧美一级在线亚洲天堂| 色综合色综合| 丰满人妻一区二区三区53视频| 亚洲va欧美va国产va天堂影院| 日本aaa在线观看| 成人av资源在线播放| 伊人蜜桃色噜噜激情综合| 久久精品国产亚洲av久| 777色狠狠一区二区三区| 6699嫩草久久久精品影院| 日韩国产精品一区二区| 国产精品亚洲专一区二区三区| 日韩熟女精品一区二区三区| 一级做a爰片久久毛片美女图片| 精品精品视频| 成人观看免费完整观看| 亚洲激情自拍偷拍| 国产美女性感在线观看懂色av| 51国偷自产一区二区三区| 丝瓜av网站精品一区二区| 欧美狂猛xxxxx乱大交3| 日韩欧美高清在线|