这是我在工作中做需求时的通用任务模板设计,目的是做一套通用的任务模板,那个满足不同的任务处理需求。但由于不同的任务特性,无法做到绝对通用 。通过策略模式和代理模式来进行代码设计,对于每个任务都存在不同的处理策略。
创建通用任务接口
public interface ServiceTask {
void dealTask();
}
创建三个任务类型
public class Task01 implements ServiceTask {
@Override
public void dealTask() {
System.out.println("我是任务1的策略");
}
}
public class Task02 implements ServiceTask {
@Override
public void dealTask() {
System.out.println("我是任务2的策略");
}
}
public class Task03 implements ServiceTask {
@Override
public void dealTask() {
System.out.println("我是通用任务的策略");
}
}
创建任务代理
public class TaskProxy {
//通过构造函数进行获取那个任务对象
public TaskProxy(Integer i) {
this.getTask(i);
}
private ServiceTask serviceTask;
//选择使用那种策略处理任务
private void getTask(Integer integer) {
switch (integer) {
case 1:
this.serviceTask = new Task01();
break;
case 2:
this.serviceTask = new Task02();
break;
default:
this.serviceTask = new Task03();
break;
}
}
//选择对象那个方法
public void dealTaskProxy() {
serviceTask.dealTask();
}
}
public class Main {
public static void main(String[] args) {
//这是选择使用任务一做法
TaskProxy taskProxy = new TaskProxy(2);
taskProxy.dealTaskProxy();
}
}
结果:我是任务2的策略
通过建立proxy的代理类,相当于一个中介的作用,在不改变mian方法的前提下,进行不同的业务处理。不用在代码中使用过多的if,else语句,因为任务不可能是只有三个。