概述
定义相关类
定义处理公共类
public interface TestProcesser<T> {
final ScheduledThreadPoolExecutor threadPool = new ScheduledThreadPoolExecutor(1, new ThreadPoolExecutor.DiscardOldestPolicy());
public T process(JSONObject json, T obj);
public boolean isDone();
}
定义责任链类
public class TestProcessers<T> implements TestProcesser<T> {
private List<TestProcesser<T>> pros;
public TestProcessers() {
this.pros = Lists.newArrayList();
}
public TestProcessers(TestProcesser<T>[] pros) {
this.pros = Lists.newArrayList(pros);
}
@Override
public T process(JSONObject json, T obj) {
T temp = obj;
for (TestProcesser<T> pro : this.pros) {
temp = pro.process(json, temp);
if (null == temp) {
break;
}
}
return temp;
}
public void append(TestProcesser<T> pro) {
this.pros.add(pro);
}
@Override
public boolean isDone() {
for (TestProcesser<T> pro : pros) {
if (!pro.isDone()) {
return false;
}
}
return true;
}
}
定义第一个处理类
public class TestOneProcesser implements TestProcesser<String> {
@Override
public String process(JSONObject json, String obj) {
System.out.println(obj);
return "处理1";
}
@Override
public boolean isDone() {
return true;
}
}
定义第二个处理类
public class TestTowProcesser implements TestProcesser<String> {
@Override
public String process(JSONObject json, String obj) {
System.out.println(obj);
return "处理2";
}
@Override
public boolean isDone() {
return true;
}
}
测试代码
@Test
public void testProcesser() {
TestProcessers<String> stringProcessers = new TestProcessers<>();
stringProcessers.append(new TestOneProcesser());
stringProcessers.append(new TestTowProcesser());
stringProcessers.process(new JSONObject(),"1");
}