我们知道Java里共有23种设计模式,负责任务的调度和任务的分配,委派模式不属于GOF 23种设计模式之一,委派模式属于行为型设计模式。
委派模式
定义
委派模式又称委托模式,将任务的分配和执行分离开来,可以看做是一种特殊情况下的静态代理的全权代理。
适用场景
(1) 委派对象本身不知道如何处理一个任务(或请求),把请求交给其他对象处理。
(2) 实现程序的解耦。
优点
(1) 通过任务的委派能够将一个大型的任务细化。
(2) 能够加快任务的执行效率。
缺点
(1) 需要根据任务的复杂程度进行不同的改变。
(2) 在任务复杂的情况下可能需要多重委派,容易造成紊乱。
实例
/**
* 创建抽象接口
*/
public interface IEmployee {
void doSomething(String task);
}
/**
* 创建IEmployeeA类
*/
public class IEmployeeA implements IEmployee {
@Override
public void doSomething(String task) {
System.out.println("我是员工A,我擅长" + task + "工作");
}
}
/**
* 创建IEmployeeB类
*/
public class IEmployeeB implements IEmployee {
@Override
public void doSomething(String task) {
System.out.println("我是员工B,我擅长" + task + "工作");
}
}
/**
* 创建Leader类 委派类用于任务调度与分配
*/
public class Leader implements IEmployee {
private Map<String, IEmployee> map = new HashMap<String, IEmployee>();
public Leader() {
map.put("编程", new IEmployeeA());
map.put("UI", new IEmployeeB());
}
@Override
public void doSomething(String task) {
if (!map.containsKey(task)) {
System.out.println("超出能力范围");
return;
}
map.get(task).doSomething(task);
}
}
/**
* 创建Boss类
*/
public class Boss {
//Boss下达命令
public void command(String task, Leader leader) {
leader.doSomething(task);
}
}
/**
* 创建测试类
*/
public class Test {
public static void main(String[] args) {
new Boss().command("编程", new Leader());
new Boss().command("UI", new Leader());
new Boss().command("数据分析", new Leader());
}
}