javafx 调用接口_JavaFX技巧3:使用回调接口
javafx 調用接口
作為UI框架開發人員,提供自定義控件外觀和行為的方法是我工作的一部分。 在許多情況下,這是通過允許框架用戶在控件上注冊工廠來完成的。 過去,我會為此創建一個工廠接口,并在框架內提供一個或多個默認實現。
這些事情在JavaFX中的處理方式有所不同,我開始為自己的工作而接受它。 JavaFX使用一個稱為javafx.util.Callback的通用接口,只要需要一段代碼即可為給定參數(P)生成結果(R)的地方。
該界面如下所示:
public interface Callback<P,R> {public R call(P param); }優點
起初,我不喜歡使用此接口,因為我的代碼太冗長:我不再擁有不解自明的接口名稱。 但最后我意識到優勢在于缺乏詳細性。 優點是:
- 我們最終減少了編寫代碼。 沒有專用接口,沒有默認實現。
- 使用API??的開發人員不必記住不同的工廠,而是可以專注于要創建的對象以及對他可用的參數。
- 回調接口是功能接口。 我們可以使用Lambda表達式,這使代碼更加優雅,并且我們不得不再次編寫更少的代碼。
案例分析
FlexGanttFX框架包含一個名為Dateline的控件,用于顯示(驚奇)日期。 每個日期都顯示在其自己的單元格中。 日界線可以顯示不同的時間單元(ChronoUnit從java.time,和從SimpleUnit FlexGanttFX)。 工廠方法用于根據所示的時間單位構建單元。
在使用回調方法之前,我遇到以下情況:一個名為DatelineCellFactory的接口,其中只有一個方法createDatelineCell() 。 我提供了兩個默認實現,分別稱為ChronoUnitDatelineCellFactory和SimpleUnitDatelineCellFactory 。 通過使用回調,我能夠刪除所有三個接口/類,并且在日期行的外觀中找到了以下兩行:
dateline.setCellFactory(<span class="skimlinks-unlinked">SimpleUnit.class</span>,unit -> new SimpleUnitDatelineCell());dateline.setCellFactory(<span class="skimlinks-unlinked">ChronoUnit.class</span>,unit -> new ChronoUnitDatelineCell());兩行代碼而不是三個文件! 我認為這個例子說明了一切。
翻譯自: https://www.javacodegeeks.com/2014/04/javafx-tip-3-use-callback-interface.html
javafx 調用接口
總結
以上是生活随笔為你收集整理的javafx 调用接口_JavaFX技巧3:使用回调接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lol打野戴安娜怎么点天赋符文天赋(安妮
- 下一篇: 全键盘安卓手机(全键盘安卓手机推荐)