Java 8中的策略模式
生活随笔
收集整理的這篇文章主要介紹了
Java 8中的策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這是兩個有關如何使用Java 8功能樣式以及Cyclops模式匹配和Hamcrest庫來實現策略模式設計的示例。
PrintDependingOnInput方法是一種策略,該策略將根據傳遞的日志在System.println中顯示一些消息。
AddPrefix是另一種策略,它將根據郵件內容為郵件添加前綴。
package com.marco.patternmatching; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.hamcrest.core.AllOf.allOf; import java.util.ArrayList; import java.util.List; import com.aol.cyclops.matcher.builders.Matching; public class FunctionalStrategy {public static void main(String[] args) {List<String> toTest = new ArrayList<>();toTest.add("INFO everything is fine");toTest.add("WARN something weird happened");toTest.add("ERROR NullPointerException");toTest.add("ERROR IOException");toTest.stream().forEach(FunctionalStrategy::printDependingOnInput);System.out.println("--------------------");List<String> messages = new ArrayList<>();messages.add("everything is fine");messages.add("something weird happened");messages.add("NullPointerException");messages.add("IOException");messages.stream().map(FunctionalStrategy::addPrefix).forEach(System.out::println);}public static void printDependingOnInput(String log) {Matching.when().isMatch(startsWith("INFO")).thenConsume(System.out::println).when().isMatch(startsWith("WARN")).thenConsume(message -> System.out.println("Found one warning : " + message)).when().isMatch(allOf(startsWith("ERROR"), containsString("NullPointerException"))).thenConsume(message -> System.err.println(message)).when().isMatch(allOf(startsWith("ERROR"), containsString("IOException"))).thenConsume(message -> System.err.println(message + " Retrying a couple of times")).match(log);}public static String addPrefix(String log) {return Matching.when().isMatch(allOf(not(containsString("Exception")), not(containsString("weird")))).thenApply(message -> "INFO " + message).when().isMatch(containsString("weird")).thenApply(message -> "WARN " + message).when().isMatch(containsString("Exception")).thenApply(message -> "ERROR " + message).match(log).get();} }干凈整潔;)
翻譯自: https://www.javacodegeeks.com/2015/06/strategy-pattern-in-java-8.html
總結
以上是生活随笔為你收集整理的Java 8中的策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 众筹盈利怎么分红?
- 下一篇: 特斯拉 8 月国内 BEV 销量占比 1