精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产一成人久久精品| 精品一区91| 国产精品视频麻豆| 51国偷自产一区二区三区| 国产午夜激情视频| 免费欧美一区| 欧美一区二区大片| 免费看的黄色大片| 在线观看av黄网站永久| 粉嫩在线一区二区三区视频| 国产999在线观看| 亚洲女人久久久| 成人黄色av网址| 在线看日本不卡| 国产传媒久久久| 国产高清在线| 99精品欧美一区二区三区小说| 国产精品入口免费视| 亚洲国产精品久| 欧美理论视频| 精品国产一区久久| 美女在线视频一区二区 | 日韩中文娱乐网| 婷婷五月精品中文字幕| 日韩成人综合网站| 欧美性xxxxhd| 男人天堂av片| gogogogo高清视频在线| 国产性色一区二区| 激情伦成人综合小说| 国产精品伦理一区| 日韩精品一二区| 91成人性视频| 日韩少妇裸体做爰视频| 欧美先锋影音| 欧美巨大黑人极品精男| 亚洲天堂精品一区| 国产99久久久国产精品成人免费 | 国产精品91在线| 亚州国产精品视频| 狠狠综合久久| 美女撒尿一区二区三区| 中文字幕精品亚洲| 凹凸成人精品亚洲精品密奴| 亚洲免费一在线| 欧美黑人欧美精品刺激| 动漫视频在线一区| 精品免费国产一区二区三区四区| 午夜免费福利网站| 久久亚洲精精品中文字幕| 在线观看91av| 先锋资源在线视频| 玖玖精品一区| 日韩欧美国产精品一区| 99热这里只有精品2| 久久人人视频| 91精品国产综合久久福利| 在线看免费毛片| 欧美电影在线观看网站| 欧美日韩色综合| 在线观看日本一区二区| 久久久久久久性潮| 91精品国产乱| 风韵丰满熟妇啪啪区老熟熟女| 人人爱人人干婷婷丁香亚洲| 日韩欧美视频一区| 亚洲成a人无码| 欧美日韩一本| 伊人久久五月天| 国精品人伦一区二区三区蜜桃| 天天超碰亚洲| 久久久久久91| 久久中文字幕免费| 老司机精品视频一区二区三区| 国产自摸综合网| 精品国产亚洲av麻豆| caoporn国产精品| 久久青青草综合| 第九色区av在线| 1000精品久久久久久久久| 青青草影院在线观看| 黄色影院在线看| 欧美日韩黄色大片| www.com黄色片| 国产午夜亚洲精品一级在线| 亚洲国产成人91精品| 国产亚洲无码精品| 色婷婷热久久| 久久人人爽人人| 亚洲国产精品无码久久久| 美女视频一区二区| 动漫一区二区在线| 第一页在线观看| 亚洲国产成人av| 性欧美videossex精品| 中文字幕亚洲在线观看| 亚洲视频在线免费观看| 天天看片中文字幕| 老**午夜毛片一区二区三区| 国产日韩欧美在线看| 人妻少妇一区二区三区| 国产精品久久久久影视| 黄色免费视频大全| 国产精品国产亚洲精品| 国产亚洲精品日韩| 国产主播在线播放| 久久成人麻豆午夜电影| 免费看污久久久| 影音先锋男人资源在线| 日本精品视频一区二区三区| 国产免费a级片| 日本一区二区在线看| 国内精品久久久久影院优| 伊人免费在线观看高清版| 97精品久久久久中文字幕 | 在线免费看黄网站| 精品久久久久久久久久| 亚洲男人天堂av在线| 真实原创一区二区影院| 国内免费久久久久久久久久久| 亚洲图片中文字幕| 国产日韩在线不卡| 免费无码不卡视频在线观看| 亚洲欧美日本国产| 精品国产一区二区三区久久| 国产又粗又猛又爽又| 成人精品鲁一区一区二区| 吴梦梦av在线| 91成人在线| 亚洲欧美日韩综合| 中文字幕亚洲精品一区| 成人av综合在线| 久久视频免费在线| 91精品麻豆| 少妇激情综合网| 凹凸精品一区二区三区| 久久亚洲一区二区三区明星换脸| www污在线观看| 一区二区三区欧洲区| 欧美成人国产va精品日本一级| 亚洲天堂一二三| 国产精品国产三级国产aⅴ无密码| 激情综合网婷婷| 国产毛片一区二区三区| 日本精品性网站在线观看| 青草久久伊人| 在线亚洲欧美专区二区| 黄免费在线观看| 天堂蜜桃91精品| 日韩欧美视频一区二区三区四区| 欧美精品高清| 丝袜亚洲另类欧美重口| 一级特黄aaa| 成人免费一区二区三区在线观看 | 亚洲国产伊人| 久久av在线看| 精品毛片在线观看| 亚洲综合激情另类小说区| 国产69视频在线观看| 激情综合在线| 久久久一本精品99久久精品| 亚洲美女久久精品| 亚洲图片欧美午夜| 中文字幕免费播放| 亚洲三级电影全部在线观看高清| 免费看的av网站| 99国产精品自拍| 欧美日韩三区四区| 少妇精品视频在线观看| 久久国产色av| 五月婷婷丁香六月| 欧美性生活久久| 在线观看黄网址| 从欧美一区二区三区| 久久精品国产精品亚洲色婷婷| 美女毛片一区二区三区四区| 国产精品欧美久久久| 成人在线观看免费网站| 亚洲第一天堂av| 凹凸精品一区二区三区| 亚洲精品va在线观看| 中文字幕一区三区久久女搜查官| 男女精品网站| 中文字幕一区二区三区四区五区六区 | 国产一级片在线| 在线不卡一区二区| 国产无套内射又大又猛又粗又爽| 国产欧美一区二区三区鸳鸯浴| 奇米777在线视频| 国产精品久久久免费| 亚洲欧洲久久| 久久久伦理片| 成人黄色在线播放| 欧美另类老肥妇| 久久久久99精品久久久久| 日韩在线观看视频一区二区三区| 欧美三级视频在线观看| 国产精品18p| 亚洲天堂福利av| 精品人妻一区二区三区香蕉 | av中文字幕在线| 日韩精品一区二| 久久午夜鲁丝片| 亚洲自拍另类综合| 美国黄色特级片| 成人免费毛片app| 99精品999| 久久精品观看| 999一区二区三区| 我不卡伦不卡影院| 欧美日韩一区二| 这里视频有精品| 国产免费一区二区三区在线观看| 黄色18在线观看| 欧美精品做受xxx性少妇| 岛国在线大片| 亚洲区在线播放| 色网站免费观看| 91精品国产aⅴ一区二区| 中日精品一色哟哟| 在线亚洲高清视频| 成人免费视频毛片| 亚洲第一成人在线| 农村妇女精品一区二区| 亚洲欧洲成人自拍| 国产极品视频在线观看| 久久久精品天堂| 亚洲精品理论片| 成人av电影免费观看| 国产成人精品一区二区三区在线观看| 卡一卡二国产精品 | 国产精品一区二区久久不卡| 日韩精品视频一二三| 石原莉奈在线亚洲二区| 国产午夜福利视频在线观看| 国户精品久久久久久久久久久不卡| 在线观看日本一区| 第一社区sis001原创亚洲| 欧美日韩一区在线播放| 亚洲va久久久噜噜噜久久| 精品一区二区三区自拍图片区| 国产精品极品在线观看| 国产成人精品免费视频大全最热 | 久久偷看各类wc女厕嘘嘘偷窃| 国产精品黄网站| 精品乱码一区二区三区| 青青草久久爱| 欧美久久久久久一卡四| 九九综合在线| 日韩久久在线| 天天影视综合| 国产日产欧美一区二区| 韩日欧美一区| 国产精品国产亚洲精品看不卡| 亚洲五月婷婷| 噜噜噜久久亚洲精品国产品麻豆| 国产亚洲午夜| 无码人妻精品一区二区三区66| 奇米色一区二区| 日本中文字幕观看| 国产福利一区二区| 7788色淫网站小说| 久久午夜免费电影| 黄色国产在线播放| 亚洲精品日日夜夜| 国产稀缺真实呦乱在线| 欧美日韩美女在线观看| 久草视频在线免费| 日韩一区二区三区三四区视频在线观看| 亚洲精品国偷拍自产在线观看蜜桃| 精品日韩欧美在线| 色欲av伊人久久大香线蕉影院| 亚洲毛片在线观看| 视频一区二区三区不卡| 欧美成人第一页| 松下纱荣子在线观看| 国产精品欧美一区二区| 国产精品久久久久久久久久辛辛 | 国产精品影院在线观看| 99re热精品视频| 美媛馆国产精品一区二区| 欧美国产一区二区三区激情无套| 狠狠噜天天噜日日噜| 亚洲欧美日韩专区| 亚洲欧美一区二区三区不卡| 成人免费看视频| 91成人精品一区二区| 亚洲午夜免费福利视频| 国产成人自拍偷拍| 日韩欧美电影一二三| 久草在现在线| 欧美极品少妇xxxxx| 写真福利精品福利在线观看| 91视频免费进入| 成人黄色小视频| 久久国产午夜精品理论片最新版本| 日本美女一区二区| 国产精品成人99一区无码| 中文字幕一区二区三区蜜月| 国产福利拍拍拍| 555www色欧美视频| 国产黄在线看| 97在线看福利| 欧美成人精品午夜一区二区| 欧美一进一出视频| 一区二区自拍| 国产精品久久久久久久av福利| 91麻豆国产福利在线观看| 青青草原在线免费观看视频| 欧亚一区二区三区| 天堂av中文字幕| 色综合久久久久久中文网| 国产91欧美| 欧美久久综合性欧美| 悠悠资源网久久精品| 日本一二三四区视频| 国产欧美精品国产国产专区| 日韩精品视频免费看| 日韩欧美一区二区在线视频| 99免在线观看免费视频高清| 国产91精品不卡视频| 国产精品白丝av嫩草影院| 国产香蕉一区二区三区| 久久精品久久久精品美女| 级毛片内射视频| 色哟哟国产精品| 免费播放片a高清在线观看| 高清一区二区三区日本久| 国产精品麻豆| 亚洲综合激情五月| 久久精品国产第一区二区三区| 粉嫩av蜜桃av蜜臀av| 精品久久久精品| 色屁屁草草影院ccyycom| 国模gogo一区二区大胆私拍| 视频二区欧美| 欧美黑人在线观看| 岛国精品在线观看| 国产一级淫片a| 精品国产91九色蝌蚪| 国模雨婷捆绑高清在线| av免费观看久久| 亚洲一级电影| 在线精品一区二区三区| 精品久久久一区| 欧美亚洲日本| 国产成人亚洲综合91精品| 国产精品免费99久久久| 欧美一级特黄a| 亚洲天堂2014| www.日本在线观看| 久久久久久亚洲精品| 牲欧美videos精品| 国产精品亚洲二区在线观看 | 日本一区不卡| 久久精品99国产精品日本| 亚洲色偷偷综合亚洲av伊人| 日韩一级免费一区| 超碰97免费在线| 久久精品人成| 日韩精品1区2区3区| 一级黄色毛毛片| 91精品蜜臀在线一区尤物| 欧美野外wwwxxx| 久久人人爽爽人人爽人人片av| 日韩国产在线观看| 国产老头老太做爰视频| 精品美女在线播放| 欧美大胆性生话| 一区二区精品国产| 成人一区二区三区在线观看| 国产无人区码熟妇毛片多| 少妇av一区二区三区| 亚洲综合网狠久久| 成年人在线看片| 中文字幕一区二区三区av| 亚洲黄色小说网址| 国产ts人妖一区二区三区| 欧美高清视频手机在在线| 风韵丰满熟妇啪啪区老熟熟女| 欧美午夜丰满在线18影院| 欧美成人三区| 精品国产免费久久久久久尖叫| 日韩国产欧美在线视频| 玖玖爱免费视频| 亚洲欧美激情另类校园| 国产精品国产三级在线观看| 女人天堂av手机在线| 国产精品视频一二三区| 国产91免费看| 国产免费成人av| 中日韩视频在线观看| 日本裸体美女视频| 亚洲国产精品成人av| 日本成人在线网站| 91猫先生在线| 一区二区三区欧美日韩| 国产系列在线观看| 国产三区精品| 国产一区二区在线影院|