1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| import java.util.function.BiConsumer; import java.util.function.Consumer;
class TemplateMethod {
public final void print(String message) { System.out.println("&&&&&&&&&&&&&&&&&&"); wrapPrint(message); System.out.println("&&&&&&&&&&&&&&&&&&"); }
public final void print(String message,WrapPrint wrapPrint ) { System.out.println("&&&&&&&&&&&&&&&&&&"); wrapPrint.wrapPrint(message); System.out.println("&&&&&&&&&&&&&&&&&&"); } public final void print(String message, Consumer<String> wrapPrint ) { System.out.println("&&&&&&&&&&&&&&&&&&"); wrapPrint.accept(message); System.out.println("&&&&&&&&&&&&&&&&&&"); } public final void print(String message, BiConsumer<String,String> wrapPrint ) { System.out.println("&&&&&&&&&&&&&&&&&&"); wrapPrint.accept(message,"你好"); System.out.println("&&&&&&&&&&&&&&&&&&"); }
public void wrapPrint(String message) {} } @FunctionalInterface interface WrapPrint{ void wrapPrint(String message); }
class TemplateMethods { public static void main(String[] args) { TemplateMethod templateMethod = new TemplateMethod() { @Override public void wrapPrint(String message) { System.out.println("@ " + message + " @"); } }; templateMethod.print("Hello Thread");
TemplateMethod templateMethod1 = new TemplateMethod() { @Override public void wrapPrint(String message) { System.out.println("$ " + message + " $"); } }; templateMethod1.print("Hello hh"); new TemplateMethod().print("Hello ggg", (Consumer<String>) (message) ->System.out.println("@ " + message + " @")); new TemplateMethod().print("Hello ggg", (WrapPrint) (message) ->System.out.println("@ " + message + " @")); } }
|