在Java8中包装设计模式
生活随笔
收集整理的這篇文章主要介紹了
在Java8中包装设计模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
環繞模式未在GOF書中列出,但對于以下問題非常有用:
- 循環構造,例如執行while / while / for循環
- 秒表周圍的一些代碼。
- 用運行時異常包裝檢查的異常
- 初始化和清理,例如創建/銷毀線程池或打開/關閉文件等
- 將上下文信息添加到線程,例如請求上下文信息以記錄或傳遞安全上下文等
Java需要大量的管道代碼來完成這些簡單的事情。 Java8添加了對lamdba的支持,并且可以解決此類問題。
可以將Lambda行為作為參數傳遞給任何函數,如果要解決上述問題,這是非常強大的事情。
環繞
環繞功能的模板如下所示
- 預編碼
- 實際行為
- 郵編
WrapAround for循環
@FunctionalInterfacepublic interface CodeBlock {void execute();}@FunctionalInterfacepublic interface Condition {boolean test();}public static void loop(Condition condition, CodeBlock codeBlock) {while (condition.test()) {codeBlock.execute();}}上面的代碼非常簡單,它具有2個功能接口,一個用于條件,另一個用于執行代碼塊,并且這2個行為使用lambda傳遞給循環函數。
這使我們可以引入新的構造。
讓我們看一些更多的例子
WrapAround時間/秒表
@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可關閉/異常
@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具有大量可以使代碼簡潔的功能,而我僅使用了一個功能實現真正有用的東西。
- 博客中使用的代碼可在@github獲得
翻譯自: https://www.javacodegeeks.com/2015/10/wrap-around-design-pattern-in-java8.html
總結
以上是生活随笔為你收集整理的在Java8中包装设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬盘安装linux系统安装教程(硬盘 安
- 下一篇: JavaFX实际应用程序:AISO HR