委派模式是Java中的一种行为模式,将任务的分配与实现分开。举例来说,一个公司使用委派模式前,Boss直接管理Employee;使用委派模式后,Boss通过将任务分发给Leader,Leader再让Employee实现。
使用委派模式有什么好处呢?还是拿公司举例,如果一个公司内部委派恰到好处,就能够把一个大型的任务细化,不同的工作交给擅长该工作的人做,提高办公效率;但委派模式也有缺点,如果采用过多委派,容易造成多重委派:A委托B,B委托C,让公司陷入责任混乱。
Java中是怎么实现委派模式的呢?
首先,Boss向Leader发放任务:
public class Boss {
public void command(String command, Leader leader) {
leader.doing(command);
}
}
Leader有着所有员工的信息,当他接到任务后,寻找对应的Employee完成工作:
public class Leader {
private final Map<String, Employee> register = new HashMap<>();
public Leader() {
register.put("writing", new EmployeeW());
register.put("coding", new EmployeeC());
}
public void doing(String command) {
Optional.ofNullable(register.get(command));
}
}
EmplyeeW和EmployeeC是对Employee接口的实现,接口以及实现如下:
public interface Employee {
/**
* 接收任务指令工作
* @param command
*/
void working(String command);
}
public class EmployeeC implements Employee{
@Override
public void working(String command) {
System.out.println("我是coder,我开始编码了" );
}
}
public class EmployeeW implements Employee {
@Override
public void working(String command) {
System.out.println("我是writer,我开始写字了" );
}
}
如何进行委派呢?只需要
new Boss().command("coding", new Leader());
//输出:我是coder,我开始编码了