package 好用设计1;
@FunctionalInterface
public interface CallBackInterface {
void handler(int playerId, String data) throws Exception;
}
package 好用设计1;
public class ChoiceMethod {
public static CallBackInterface CALL_1 = ((playerId, data) -> {
System.out.println("print playerId : " + playerId + " , data: " + data +" , call 1");
});
public static CallBackInterface CALL_2 = ((playerId, data) -> {
System.out.println("print playerId : " + playerId + " , data: " + data +" , call 2");
});
}
package 好用设计1;
public interface Consumer {
void before(int playerId, String str);
void handler(int playerId, String str)throws Exception;
void after(int playerId, String str);
}
package 好用设计1;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class RunningMain {
private static final Map _consumers =
Collections.synchronizedMap(new HashMap());
public static void main(String[] args) throws Exception {
RunningMain runningMain = new RunningMain();
runningMain.handlerDelivery(consumerFromDeliverCancelCallbacks(ChoiceMethod.CALL_1), 1, "zhangsan");
runningMain.handlerDelivery(consumerFromDeliverCancelCallbacks(ChoiceMethod.CALL_2), 2, "wangwu");
}
public void handlerDelivery(final Consumer delegate, int playerId, String str) throws Exception {
delegate.before(playerId, str);
delegate.handler(playerId, str);
delegate.after(playerId, str);
}
public static Consumer consumerFromDeliverCancelCallbacks(final CallBackInterface deliverCallback){
return new Consumer(){
@Override
public void before(int playerId, String str){
}
@Override
public void handler(int playerId, String str) throws Exception{
deliverCallback.handler(playerId, str);
}
@Override
public void after(int playerId, String str){
}
};
}
}