日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用Java 8的Builder模式

發布時間:2023/12/3 java 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Java 8的Builder模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在一個環境中工作,其中通過調用遠程服務而不是使用數據庫來執行大量日常腳本任務。

對于許多腳本編寫任務,我經常使用Groovy,而Groovy專門用于該任務的最有用的功能之一就是它是用流暢的Builders構建的 。

現在,Groovy構建器利用了一些Groovy語言功能,這些功能永遠都不會融入Java中。

最值得注意的是,Groovy構建器利用了Groovy的Meta編程功能,而Java不久就不會使用它。

但是,Groovy構建器具有的一個關鍵功能是其層次結構構建方法。

這使構建者可以整潔安全地創建嵌套樹狀結構,這些結構可用于對從UX表單布局到XML的所有內容進行建模。

這種方法至少可以使用Java 8 lambda表達式相當簡潔地建模。

對于我的示例,我決定采用一個相當簡單的Maven pom文件,并查看是否可以創建一個構建器來處理該文件。

對于制造商的所有代碼可在Github 這里 。

pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.github</groupId> <artifactId>lambda-builder</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.7.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <fork>true</fork> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin> </plugins> </build> </project>

這是構建器構建此模型的示例代碼:

MarkupBuilder pom = new XmlMarkupBuilder(true, "pom") .at("xmlns", "http://maven.apache.org/POM/4.0.0") .at("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") .at("xsi:schemaLocation", "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"); pom.el("modelVersion", "4.0.0"); pom.el("groupId", "com.github"); pom.el("artifactId", "lambda-builder"); pom.el("version", "1.0-SNAPSHOT"); pom.el("dependencies", () -> { pom.el("dependency", () -> { pom.el("groupId", "junit"); pom.el("artifactId", "junit"); pom.elx("version", version::get); }); pom.el("dependency", () -> { pom.el("groupId", "commons-beanutils"); pom.el("artifactId", "commons-beanutils"); pom.elx("version", version::get); }); }); pom.el("build", () -> { pom.el("plugins", () -> { pom.el("plugin", () -> { pom.el("groupId", "org.apache.maven.plugins"); pom.el("artifactId", "maven-compiler-plugin"); pom.el("configuration", () -> { pom.el("source", 1.8); pom.el("target", 1.8); pom.el("fork", true); pom.el("compilerArgument", "-proc:none"); }); }); }); });

有關此方面的一些注意事項:

  • 我為某些方法創建了一種特殊形式,該方法將java.util.function.Supplier作為參數,并允許您延遲對值的求值,直到遍歷構建器為止。
  • 我避免使用方法鏈接(盡管我在構建器中迎合了它)。 嘗試這兩種方法,我個人覺得這很干凈。
  • Java沒有Groovy擁有的所有語法糖,因此我在函數接口中使用了java.lang.Runnable ,從而減少了創建閉包的語法,但缺點是必須在初始builder對象上具有一個句柄。

盡管沒有Groovy建設者那么出色,但是向前邁出了一大步。 等不及Java 8。

翻譯自: https://www.javacodegeeks.com/2014/06/builder-pattern-using-java-8.html

總結

以上是生活随笔為你收集整理的使用Java 8的Builder模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。