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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java包装模式_在Java8中包装设计模式

發(fā)布時(shí)間:2023/12/3 java 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java包装模式_在Java8中包装设计模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java包裝模式

GOF書(shū)中沒(méi)有列出環(huán)繞模式,但對(duì)于以下問(wèn)題非常有用:

  • 循環(huán)構(gòu)造,例如執(zhí)行while / while / for循環(huán)
  • 秒表周?chē)囊恍┐a。
  • 用運(yùn)行時(shí)異常包裝檢查的異常
  • 初始化和清理,例如創(chuàng)建/銷(xiāo)毀線程池或打開(kāi)/關(guān)閉文件等
  • 將上下文信息添加到線程,例如,請(qǐng)求上下文信息以記錄或傳遞安全上下文等

Java需要大量的管道代碼來(lái)完成這些簡(jiǎn)單的事情。 Java8添加了對(duì)lamdba的支持,并且可以解決此類(lèi)問(wèn)題。

可以將Lambda行為作為參數(shù)傳遞給任何函數(shù),如果要解決上述問(wèn)題,這是非常強(qiáng)大的事情。

環(huán)繞

環(huán)繞功能的模板如下所示

  • 預(yù)編碼
  • 實(shí)際行為
  • 郵編

WrapAround for循環(huán)

@FunctionalInterfacepublic interface CodeBlock {void execute();}@FunctionalInterfacepublic interface Condition {boolean test();}public static void loop(Condition condition, CodeBlock codeBlock) {while (condition.test()) {codeBlock.execute();}}

上面的代碼很簡(jiǎn)單,它有2個(gè)功能接口,一個(gè)用于條件,另一個(gè)用于執(zhí)行代碼塊,并且這2個(gè)行為使用lambda傳遞給循環(huán)函數(shù)。

這使我們可以引入新的構(gòu)造。

讓我們看一些更多的例子

WrapAround時(shí)間/秒表

@FunctionalInterfacepublic interface CodeBlock {void execute();}public static void time(String name, CodeBlock codeBlock) {long start = System.currentTimeMillis();codeBlock.execute();long total = System.currentTimeMillis() - start;System.out.println(name + " took " + total + " ms");}

WrapAround可關(guān)閉/異常

@FunctionalInterfacepublic interface AutoCodeBlock {void execute(AutoCloseable closeable) throws IOException;}@FunctionalInterfacepublic interface ExceptionBlock {void execute() throws Exception;}public static void withAutoClose(AutoCloseable resource, AutoCodeBlock codeBlock) throws Exception {try (AutoCloseable c = resource) {codeBlock.execute(c);}}public static void wrapWithRuntimeException(ExceptionBlock codeBlock) {try {codeBlock.execute();} catch (Exception e) {throw new RuntimeException(e);}}

Java 8具有大量可以使代碼簡(jiǎn)潔的功能,而我僅使用了一個(gè)功能實(shí)現(xiàn)真正有用的東西。

  • 在博客中使用的代碼,請(qǐng)@ github上

翻譯自: https://www.javacodegeeks.com/2015/10/wrap-around-design-pattern-in-java8.html

java包裝模式

總結(jié)

以上是生活随笔為你收集整理的java包装模式_在Java8中包装设计模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。