added Callback pattern
This commit is contained in:
19
callback/src/main/java/com/iluwatar/App.java
Normal file
19
callback/src/main/java/com/iluwatar/App.java
Normal file
@ -0,0 +1,19 @@
|
||||
package com.iluwatar;
|
||||
|
||||
/**
|
||||
* Callback pattern is more native for dynamic languages where function are first-class citizen.
|
||||
* Prior to Java8 can be simulated using simple (alike command) interfaces.
|
||||
*/
|
||||
public class App {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Task task = new SimpleTask();
|
||||
Callback callback = new Callback() {
|
||||
@Override
|
||||
public void call() {
|
||||
System.out.println("I'm done now.");
|
||||
}
|
||||
};
|
||||
task.executeWith(callback);
|
||||
}
|
||||
}
|
9
callback/src/main/java/com/iluwatar/Callback.java
Normal file
9
callback/src/main/java/com/iluwatar/Callback.java
Normal file
@ -0,0 +1,9 @@
|
||||
package com.iluwatar;
|
||||
|
||||
/**
|
||||
* Callback interface
|
||||
*/
|
||||
public interface Callback {
|
||||
|
||||
public void call();
|
||||
}
|
13
callback/src/main/java/com/iluwatar/SimpleTask.java
Normal file
13
callback/src/main/java/com/iluwatar/SimpleTask.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.iluwatar;
|
||||
|
||||
/**
|
||||
* Implementation of task that need to be executed
|
||||
*/
|
||||
public class SimpleTask extends Task {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
System.out.println("Perform some important activity.");
|
||||
}
|
||||
|
||||
}
|
16
callback/src/main/java/com/iluwatar/Task.java
Normal file
16
callback/src/main/java/com/iluwatar/Task.java
Normal file
@ -0,0 +1,16 @@
|
||||
package com.iluwatar;
|
||||
|
||||
/**
|
||||
* Template-method class for callback hook execution
|
||||
*/
|
||||
public abstract class Task {
|
||||
|
||||
public final void executeWith(Callback callback) {
|
||||
execute();
|
||||
if (callback != null) {
|
||||
callback.call();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void execute();
|
||||
}
|
12
callback/src/test/java/com/iluwatar/AppTest.java
Normal file
12
callback/src/test/java/com/iluwatar/AppTest.java
Normal file
@ -0,0 +1,12 @@
|
||||
package com.iluwatar;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class AppTest {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
String[] args = {};
|
||||
App.main(args);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user