跳到主要内容

概述

定义相关类

定义处理公共类

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");
}