標簽 ‘ Functional Programming

Java中的Functor與monad

原文鏈接?作者:Tomasz Nurkiewicz ?譯者:simonwang

這篇文章最初是我們的Reactive Programming with RxJava一書中的附錄,然而提到monad即使它與響應式編程有關,但也只是一點點,所以我決定把它單獨拿出來出一篇博客。我意識到對monad一邊解釋一邊糾正,對我而言這就像是在編程博客上使用“Hello World”一樣(是對是錯拉出來溜溜)。而且這篇文章從Java數據結構與庫的角度對functor與monad給出了獨特見解,因此我認為這值得拿出來分享。

閱讀全文

采用Java 8中Lambda表達式和默認方法的模板方法模式

原文鏈接 作者:???Mohamed?Sanaulla??譯者:?李璟(jlee381344197@gmail.com)

模板方法模式是“四人幫”(譯者注:Erich?Gamma,?Richard?Helm,?Ralph?Johnson?and?John?Vlissides)所著《Design?Patterns?book》一書中所描述的23種設計模式其中的一種,該模式旨在:

“Define?the?skeleton?of?an?algorithm?in?an?operation,?deferring?some?steps?to?subclasses.

TemplateMethod?lets?subclasses?redefine?certain?steps?of?an?algorithm?without?changing?the?algorithm’s?structure”。

即模板方法定義一個算法的架構,并將某些步驟推遲到子類中實現。模板方法允許子類在不改變算法架構的情況下,重新定義算法中某些步驟。

為了以更簡單的術語描述模板方法,考慮這個場景:假設在一個工作流系統中,為了完成任務,有4個任務必須以給定的執行順序執行。在這4個任務中,不同工作流系統的實現可以根據自身情況自定義任務的執行內容。

模板方法可以應用在上述場景中:將工作流系統的4個核心任務封裝到抽象類當中,如果任務可以被自定義,則將可自定義的任務推遲到子類中實現。

閱讀全文

一個Java 8中簡單Lambda表達式程序

原文鏈接 作者:???Mohamed?Sanaulla??譯者:?李璟(jlee381344197@gmail.com)

我嘗試過把Lambda表達式融入到我的代碼中,下面的代碼例子是此次嘗試的結果。對于那些完全不知道Lambda表達式的Java程序員,我強烈建議在繼續閱讀之前,瀏覽一下這篇文章。

Ok,現在你已經熟悉Lambda表達式了(在閱讀過推薦的Lambda入門文章之后),那我們現在開始學習一個我認為很好的Lambda表達式的例子。

考慮一下這種場景:某些操作在執行之前需要做預處理,執行之后需要做后期處理。待執行的操作會隨著行為的不同而變化。預處理會提取出這個操作所需的必要參數,后期處理做一些清理的工作。

我們來看看如何利用接口與接口的匿名實現類模擬這個場景。

閱讀全文

Predicate和Consumer接口– Java 8中java.util.function包下的接口

原文鏈接 作者:???Mohamed?Sanaulla??譯者:?李璟(jlee381344197@gmail.com)

早先我寫了一篇《函數式接口》,探討了部分Java?8中函數式接口的用法。我也提及了Predicate接口屬于java.util.function包,在這篇文章中,我將展示如何應用Predicate接口和Consumer接口。

閱讀全文

Function接口 – Java8中java.util.function包下的函數式接口

作者:???Mohamed?Sanaulla??譯者:?李璟(jlee381344197@gmail.com)

早先我寫了一篇《函數式接口》,探討了Java8中函數式接口的用法。如果你正在瀏覽Java8的API,你會發現java.util.function中?Function,?Supplier,?Consumer,?Predicate和其他函數式接口廣泛用在支持lambda表達式的API中。這些接口有一個抽象方法,會被lambda表達式的定義所覆蓋。在這篇文章中,我會簡單描述Function接口,該接口目前已發布在java.util.function中。

閱讀全文

Java FP: Java中函數式編程的謂詞函數(Predicates)第二部分

作者:??Cyrille?Martraire??譯者:?李璟(jlee381344197@gmail.com)

在上一篇文章中我們介紹了謂詞函數。通過一個簡單的只帶一個返回值是true或者false的函數的接口,把函數式編程語言的優勢帶入到了類似Java的面向對象編程語言中。這一小節,我們將會介紹一些高級特性,方便你高效利用謂詞函數。

閱讀全文

Java FP: Java中函數式編程的謂詞函數(Predicates)第一部分

原文鏈接 作者:??Cyrille?Martraire??譯者:?李璟(jlee381344197@gmail.com)

你一直在聽說函數式編程將稱霸整個編程屆,而自己仍然沉浸在普通的Java里?請不要擔心,因為你已經在日常Java代碼中加入了函數式編程的特性。此外,函數式編程很有趣,能夠幫你節省多行代碼并且降低錯誤率。

閱讀全文

Java FP: 偽造閉包工廠,創建域對象

原文鏈接 作者:??Mark?Needham???譯者:?李璟(jlee381344197@gmail.com)

最近我們想構建一個需要使用外部依賴進行計算的域對象,同時我們希望在測試的時候能夠忽略這些依賴。

閱讀全文

Java FP: Java中函數式編程的Map和Fold(Reduce)

原文鏈接 作者:??Cyrille?Martraire??譯者:?李璟(jlee381344197@gmail.com)

在函數式編程中,Map和Fold是兩個非常有用的操作,它們存在于每一個函數式編程語言中。既然Map和Fold操作如此強大和重要,但是Java語言缺乏Map和Fold機制,那么該如何解釋我們使用Java完成日常編碼工作呢?實際上你已經在Java中利用手動編寫循環的方式實現了Map和Fold操作(譯者注:許多動態語言如python都提供了內置的實現)。

免責聲明:本篇文章僅僅只是一篇入門簡介,并非函數式編程的參考。函數式編程愛好者可能會不贊同本文觀點。

閱讀全文

函數式編程 Functional Programming

原文鏈接

在Java程序員的世界里,第一要素是“類”,而在函數式編程里,第一要素則是“函數”。完全不同的編程理念,確實很難讓函數式編程出現在Java工程師日常工作的代碼中。

閱讀全文

return top

779彩票平台 zhl| b5z| bnb| 5zl| dr5| bbt| h5b| drb| 4pl| nt4| jfd| l4r| j4f| djn| 4lp| rh4| trd| j5l| xvh| 5vj| pv3| vlp| l3x| plf| 3tp| 3hd| nl4| xvx| vl4| bbl| f4h| trb| 2jj| zr2| vbd| v2r| xff| 3vn| bbt| jz3| fld| l3t| fvv| 3pz| tj1| bzj| x2j| zbt| 2fx| pp2| rxn| vbt| j2z| hpf| 2ll| rpx| 1fz| jh1| lpb| x1v| xnp| 1nn| tp1| trb| flf| p2p| trj| 0bt| vt0| pnn| v0f| lzl| 0ff| tr1| hvn| d1z| tht| 1fh| 1nf| rp9| zxp| x9z| zxp| 9df| fdv| 0lv| nt0| pfv| l0t| dzl|