java包装模式_在Java8中包装设计模式
生活随笔
收集整理的這篇文章主要介紹了
java包装模式_在Java8中包装设计模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
java包裝模式
GOF書中沒有列出環(huán)繞模式,但對于以下問題非常有用:
- 循環(huán)構造,例如執(zhí)行while / while / for循環(huán)
- 秒表周圍的一些代碼。
- 用運行時異常包裝檢查的異常
- 初始化和清理,例如創(chuàng)建/銷毀線程池或打開/關閉文件等
- 將上下文信息添加到線程,例如,請求上下文信息以記錄或傳遞安全上下文等
Java需要大量的管道代碼來完成這些簡單的事情。 Java8添加了對lamdba的支持,并且可以解決此類問題。
可以將Lambda行為作為參數(shù)傳遞給任何函數(shù),如果要解決上述問題,這是非常強大的事情。
環(huán)繞
環(huán)繞功能的模板如下所示
- 預編碼
- 實際行為
- 郵編
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();}}上面的代碼很簡單,它有2個功能接口,一個用于條件,另一個用于執(zhí)行代碼塊,并且這2個行為使用lambda傳遞給循環(huán)函數(shù)。
這使我們可以引入新的構造。
讓我們看一些更多的例子
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具有大量可以使代碼簡潔的功能,而我僅使用了一個功能實現(xiàn)真正有用的東西。
- 在博客中使用的代碼,請@ github上
翻譯自: https://www.javacodegeeks.com/2015/10/wrap-around-design-pattern-in-java8.html
java包裝模式
總結
以上是生活随笔為你收集整理的java包装模式_在Java8中包装设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三国群英传单机版安卓(安卓三国群英传)
- 下一篇: 备案制度时效多久(备案制度时效)