委派模式不是23种设计模式中的设计模式,它是比较常见的
场景:老板-项目经理-开发人员
老板向项目经理下达任务,项目经理让开发人员去实现(需要拿到开发人员的引用,代理模式),但是选择具体哪个开发人员是项目经理需要思考的事情(策略模式)。
以上案例中,体现了代理模式和策略模式,这就是所谓的——委派模式
在我们的项目中,常见使用委派模式的地方有:DispatcherServlet,Delegate结尾的类名
老板-项目经理-开发人员示例代码
老板代码
BossTest
package com.example.demo.delegate;
public class BossTest {
public static void main(String[] args) {
DispatcherServlet servlet = new DispatcherServlet();
servlet.doing("发工资");
}
}
项目经理代码(DispatcherServlet)
package com.example.demo.delegate;
import com.example.demo.delegate.controller.Driver;
import com.example.demo.delegate.controller.Employee;
import com.example.demo.delegate.controller.HR;
import java.util.HashMap;
import java.util.Map;
public class DispatcherServlet implements Employee {
private Map<String,Employee> map = new HashMap<>();
public DispatcherServlet(){
map.put("开车",new Driver());
map.put("发工资",new HR());
}
@Override
public void doing(String command) {
for (String key : map.keySet()) {
if(key.equals(command)){
map.get(key).doing(command);
break;
}
}
}
}
员工接口
package com.example.demo.delegate.controller;
public interface Employee {
void doing(String command);
}
司机类
package com.example.demo.delegate.controller;
public class Driver implements Employee {
@Override
public void doing(String command) {
System.out.println("Driver 去" + command);
}
}
人事经理类
package com.example.demo.delegate.controller;
public class HR implements Employee {
@Override
public void doing(String command) {
System.out.println("HR 去" + command);
}
}
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载