Reformat business-delegate, callback, chain, command, composite, dao, decorator & dependency-injection patterns.

This commit is contained in:
Ankur Kaushal
2015-11-01 18:48:43 -05:00
parent 3af06a3a3a
commit 449340bd2b
54 changed files with 698 additions and 700 deletions

View File

@@ -2,20 +2,21 @@ package com.iluwatar.callback;
/**
*
* Callback pattern is more native for functional languages where functions are treated as first-class citizens.
* Prior to Java 8 callbacks can be simulated using simple (alike command) interfaces.
* Callback pattern is more native for functional languages where functions are treated as
* first-class citizens. Prior to Java 8 callbacks 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);
}
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);
}
}

View File

@@ -7,5 +7,5 @@ package com.iluwatar.callback;
*/
public interface Callback {
public void call();
public void call();
}

View File

@@ -7,9 +7,8 @@ package com.iluwatar.callback;
*/
public class SimpleTask extends Task {
@Override
public void execute() {
System.out.println("Perform some important activity and after call the callback method.");
}
@Override
public void execute() {
System.out.println("Perform some important activity and after call the callback method.");
}
}

View File

@@ -7,12 +7,12 @@ package com.iluwatar.callback;
*/
public abstract class Task {
public final void executeWith(Callback callback) {
execute();
if (callback != null) {
callback.call();
}
}
public final void executeWith(Callback callback) {
execute();
if (callback != null) {
callback.call();
}
}
public abstract void execute();
public abstract void execute();
}

View File

@@ -5,35 +5,35 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* Add a field as a counter. Every time the callback method is called increment this
* field. Unit test checks that the field is being incremented.
* Add a field as a counter. Every time the callback method is called increment this field. Unit
* test checks that the field is being incremented.
*
* Could be done with mock objects as well where the call method call is verified.
*/
public class AppTest {
private Integer callingCount = 0;
private Integer callingCount = 0;
@Test
public void test() {
Callback callback = new Callback() {
@Override
public void call() {
callingCount++;
}
};
@Test
public void test() {
Callback callback = new Callback() {
@Override
public void call() {
callingCount++;
}
};
Task task = new SimpleTask();
Task task = new SimpleTask();
assertEquals("Initial calling count of 0", new Integer(0), callingCount);
assertEquals("Initial calling count of 0", new Integer(0), callingCount);
task.executeWith(callback);
task.executeWith(callback);
assertEquals("Callback called once", new Integer(1), callingCount);
assertEquals("Callback called once", new Integer(1), callingCount);
task.executeWith(callback);
task.executeWith(callback);
assertEquals("Callback called twice", new Integer(2), callingCount);
assertEquals("Callback called twice", new Integer(2), callingCount);
}
}
}