国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用面向對象和功能性方法來重構Java應用

譯文 精選
開發 前端
本文將和您討論如何使用面向對象和功能性兩種方法,來實現更好的設計與 Java 應用重構,并以繼承和功能性接口的示例形式,展示了兩者在實現上的區別。

譯者 | 陳峻

審校 | 孫淑娟

在重構方面,Java主要有兩種主要方法,即:面向對象(object-oriented)和功能性(functional)。其中,前者幾乎是從Java第一版就存在了,而功能性始于2014年3月推出的Java 1.8。

1.面向對象和功能性方法

作為一種經典的面向對象語言,Java允許用戶創建靈活的對象結構。在Java 1.8出現了功能性特性之后,它不僅可以使用對象或方法,還可以使用lambdas(其本身是可執行代碼,https://dzone.com/articles/java-lambda-method-reference)進行各項操作。而在功能性的世界中,您可以像在OO的世界中使用對象那樣,去操作各種功能。

圖片

2.使用OO方法重構代碼

通過使用繼承或組合的方式來處理各種接口和類,您可以創建出各種可重用的通用方案,從而減少程序的代碼量,并提高可讀性。如果一個類滿足了如下的條件,那么它便可以在相同的公共結構中進行聯合:

  • 具有相似的字段,并被識別為同一實體
  • 有父/子(parent/children)關系
  • 有相似目的的方法

3.使用功能性方法重構代碼

與OO方法不同,這種方法提取具有相同行為的代碼。例如,我們可以在如下兩個示例中識別出相似之處:

  • 在具體實現上能夠返回相同類型
  • 在具體實現上有相同的功能

4.使用兩種方法進行重構的示例

假設我們有一個小型應用程序,其功能向正式員工(Employee)和合同工(Contractor)支付工資。每次完成支付工資后,我們都會打印一份Employee報告,并以不同的格式顯示(https://dzone.com/articles/so-much-data-so-many-formats-a-conversion-service),即:正式員工為JSON格式,而合同工為XML格式。以下便是使用兩種方法重構的示例:

圖片

現在讓我們來看一下其默認結構:

圖片

5.重構類的結構

很明顯,Contractor可以成為Employee類的子類。同時,makePayment可以被覆蓋掉。當然,我們也可以創建一個Payable接口和提取makePayment的方法,不過讓我們在此保持簡單化。如下代碼段所示,在重構之后,我們產生了一些共同的字段,以及可重用的構造函數。

圖片

6.重構功能性

現在我們可以從功能性的角度,來回顧和發掘源代碼中的相似之處:

圖片

如上圖所示,從打印報告中可以看出,我們可以使用相同的方式來進行處理,即:傳遞一個對象,并返回一個字符串。因此,我們可以將代碼部分提取為一個可重用的功能,并將其動態地用于該業務的邏輯上。我們甚至可以將其拿到該業務的外部進行使用。

7.創建功能接口

為了判定正確的功能性接口(如,Predicate、Consumer、Function等),我們需要檢查自己的輸入和輸出。在本例中,我們得到的是一個Object,并需要將其轉換為String。

圖片

該接口是由功能函數提供的。為了更加便于理解,我們用serialize方法創建一個自有的Converter接口。其對應的代碼如下,具有極強的可讀性:

圖片

8.創建Lambda轉換器(Converter)功能性接口

下面,我們可以在功能性接口的基礎上,創建兩個轉換器:JSON和XML。它們都會去匹配已定義的簽名,即:對象輸入(Object Input)和字符串輸出(String Output)。

圖片

接著,讓我們在代碼中使用它們:

圖片

9.在Employee類中封裝轉換器

與前面的方法類似,我們可以將此功能封裝在Employee父類中,并在內部功能函數中使用它們。下圖展示了如何在Employee類中封裝轉換器:

圖片

10.審查最終版本

最后,我們初始化兩個employee類,并遍歷它們的支付執行情況和打印方法。

圖片

我們將最終得到:

  • Employee父類中的Commons字段和方法被重用到了Contractor中
  • 可以在無需更改Employee類的情況下,提取功能函數轉換器(我們可以在未來再做補充)
  • 提取的功能函數可以在Employee類之外被重用

11.點評    

總的說來,上述示例并不完美,且有待改進。例如,我們可以將Employee與Contractors類隱藏在接口的后面。您也可以試著去寫一個簡單的例子,以便只展示一些面對對象和功能特性。

當然,從嚴格意義上說,我創建的功能可能并非純功能。而一些開發人員往往堅持認為:在Java中只有純功能才是更好的。在此,我持保留意見。

12.小結    

讓我們對上述內容小結一下:

使用面向對象的方法,我們可以將性質相似(similar-by-nature)的對象統一到同一個結構中。

使用功能性方法,我們則可以統一功能相似(similar-by-functionality)的代碼。

這兩種方法都能夠讓程序代碼的可讀性和可維護性得到顯著提高。

原文鏈接:https://dzone.com/articles/refactoring-java-application-object-oriented-and-f

譯者介紹

陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2018-12-12 08:15:13

物聯網設備物聯網IOT

2011-06-02 09:47:11

C語言重構

2021-12-29 21:15:08

軟件測試軟件開發

2022-08-23 09:00:00

Web測試工具自動化

2012-05-31 10:24:59

架構

2023-08-08 12:32:34

AMD公共云工程

2012-12-13 11:05:42

IBMdW

2010-07-23 10:54:09

優化SQL Serve

2010-07-20 09:33:14

Perl方法

2017-12-04 10:51:06

VMwareAWS

2011-06-28 09:53:43

iPhone諾基亞N9

2020-06-09 09:13:12

JavaScript重構對象

2013-06-24 10:21:47

面向對象Web應用JavaScript

2009-08-13 18:00:48

Eclipse重構功能擴展點

2009-12-18 11:23:30

Visual Web

2014-11-21 09:17:14

2009-06-03 18:33:35

英特爾服務器Nehalem

2020-05-08 10:29:49

CIO敏捷低代碼

2023-01-10 09:38:09

面向對象系統

2021-07-12 15:17:08

機器學習化學元素氧化態
點贊
收藏

51CTO技術棧公眾號

日韩视频中午一区| 国模无码大尺度一区二区三区| 国产一区二区成人久久免费影院| 久久精品欧美一区二区三区不卡| 国产乱人伦真实精品视频| 精品一区二区三区视频 | 欧洲人成人精品| 97超级碰碰碰久久久| 成年人视频在线看| 久久婷婷影院| 欧美激情xxxx| 一区二区三区免费播放| 奇米精品一区二区三区在线观看一| 久久夜色精品亚洲噜噜国产mv | 亚洲欧美视频一区二区| 亚洲色图都市小说| 成人xxxx视频| 最新亚洲精品| 日韩有码在线播放| 制服丝袜在线播放| 精品久久久久久亚洲精品| 999精品视频在线| 久久免费看少妇高潮| 日韩欧美精品在线不卡| 黑人一区二区| 成人免费91在线看| 激情久久久久久久| 91精品福利在线| 深夜爽爽视频| 亚洲第一福利一区| 国产精品久久久久久久免费大片| 日韩欧美天堂| 亚洲人成网站999久久久综合| 青春草免费在线视频| 精品国产91亚洲一区二区三区婷婷 | 欧美xxxx黑人又粗又长密月| 欧美男gay| 国产精品久久亚洲7777| 你懂的一区二区三区| 最近免费中文字幕视频2019| 麻豆视频在线播放| 好色先生视频污| 日韩电影免费在线观看网站| www国产精品内射老熟女| 国产真实乱对白精彩久久| 精品国产一区三区| 亚洲欧美国产毛片在线| 日本aa大片在线播放免费看| 色先锋久久av资源部| 黄色动漫在线观看| 色偷偷91综合久久噜噜| 自拍偷拍欧美一区| 国产精品99久久久久久久久久久久| 成人情趣视频网站| 国产精品一色哟哟| 欧美伊人久久久久久久久影院| 欧美成人影院| 免费看成人片| 日本一区二区在线不卡| 久草在线看片| 精品久久久中文| 一区二区三区高清在线观看| 国产狼人综合免费视频| 久久99影视| 亚洲图片小说在线| 亚洲精品国产精华液| 少妇av在线| 国产精品一区二区三区在线播放| 盗摄精品av一区二区三区| 九一国产在线| 热久久这里只有精品| 国产欧美视频一区二区三区| jizz视频在线观看| 99视频在线| 一区二区三区四区在线播放| 欧美一级做a| 国产精品99久久久久久大便| 欧美一级午夜免费电影| 国产精品男女| 日韩一本精品| 一区二区三区美女视频| 成人免费福利| 干日本少妇视频| 日韩av在线看| 免费观看久久久4p| 黄色视屏在线免费观看| 成人短视频在线观看免费| 激情久久av一区av二区av三区| 日韩精品一区二区三区免费观看| 美女在线视频一区二区 | 日本动漫理论片在线观看网站| 国产日韩精品一区二区| 成人一级黄色片| 粉嫩91精品久久久久久久99蜜桃 | 欧美一级免费在线观看| 亚洲人高潮女人毛茸茸| 久久久久91| 国产精品迅雷| 好吊妞www.84com只有这里才有精品| 亚洲一区视频在线观看视频| 一二区成人影院电影网| 综合网插菊花| 欧美黑人xxxx| 欧美日韩www| 99精品国产视频| 丝袜美腿综合| 超碰porn在线| 超碰在线97免费| 久久国产精品 国产精品| 中日韩美女免费视频网站在线观看 | 成人性生交大片免费看视频直播 | 久久福利一区二区| 亚洲伊人久久综合| 日韩高清免费观看| 精品一区二区三区香蕉蜜桃| 日韩欧美一级| 特黄国产免费播放| 999视频在线免费观看| 久久精品99久久久香蕉| 在线观看不卡视频| 国产乱色国产精品免费视频| 综合亚洲自拍| 全球中文成人在线| 中文字幕在线观| 91免费版黄色| 日本国产一区二区三区| 色妞在线综合亚洲欧美| 日韩欧美在线网站| 亚洲激情自拍视频| 91精品99| 一道在线中文一区二区三区| 国产黄色精品| 日韩电影免费观| 日本美女高清在线观看免费| 国产免费福利| 无码人妻丰满熟妇区毛片| 91免费国产精品| 国内精品**久久毛片app| 亚洲自拍欧美另类| 亚洲精品欧美日韩专区| 国产精品嫩草影院久久久| 美女视频黄免费的亚洲男人天堂| 亚洲成人av在线播放| 在线播放中文一区| 欧美日本一区二区| 欧美精品视频www在线观看| 欧洲一区二区三区免费视频| 中文字幕久久午夜不卡| 成人精品视频一区| 不卡视频免费播放| 国产91精品露脸国语对白| 欧美1区2区| 性欧美video另类hd尤物| 久久野战av| 美女国产精品久久久| 91破解版在线观看| xxxx视频在线| 国产精品伦理| 高清在线一区二区| 欧美少妇性xxxx| 亚洲激情视频| 奇米精品一区二区三区在线观看一| 久国产精品韩国三级视频| 国产原创一区二区三区| 日韩午夜高潮| 国产综合久久久久久久久久久久| 日本一区二区综合亚洲| 亚洲精品一线二线三线| 欧美午夜电影在线| 国产高清精品在线| gogo亚洲高清大胆美女人体| 国产精品免费观看久久| 69日本xxxxxxxxx49| 天堂在线视频| 97欧美成人| 国产精品久久久久久久免费观看| 日韩中文字幕区一区有砖一区| 91视频xxxx| 亚洲色图视频网| 1024成人网色www| 欧美日韩综合在线| 久久网福利资源网站| 日韩在线国产| 国产亚洲依依| 素人一区二区三区| 欧美成人亚洲| 国产亚洲一区二区三区四区| 亚洲电影免费观看高清| 国精产品一区二区| 在线免费视频福利| 久久免费精品| 免费在线欧美视频| 亚洲一区欧美一区| 欧美日韩成人在线播放| 欧美成人一区二区在线观看| av免费看在线| 亚洲欧美卡通另类91av| 欧美性受极品xxxx喷水| 日本精品视频在线播放| 日本夜爽爽一二区|