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