委派模式

介绍

* 基本作用:
	* 负责任务的调度分配;

* delegate pattern属于行为模式;

* 与代理模式的区别:
	* 代理模式注重过程;
	* 委派模式注重结果;
* 与工厂模式的区别:
	* 工厂模式注重对象的创建;


* 举例: boss下发工作任务;
	*  非委派模式:
		* boss直接分发工作任务给每个程序员;
		* 程序员完成后, 把结果直接返回给老板;
		* 所有工作都放在老板身上;
	* 委派模式:
		* 老板根据任务类型, 把项目委派(delegate)给不同项目经理;
		* 项目经理下发(despatcher)任务给程序员;
		* 老板负责项目的委派, 项目经理负责分发, 程序员负责开发; 各司其职; 层次分明;


* delegate在spring中的应用:
	* spring中, 以delegate结尾的类都采用了委派模式;
* spring dispatcherServlet:
	* 非委派模式:
		* 使用Servlet;
		* 在web.xml找servet-mapping对应的servlet-url;
	* 委派模式:
		* 在web.xml配置DispatcherServlet;
		* DispatcherServlet:
			* 采利用了委派模式+策略模式;
			* 委派模式:
				* 下发请求, 到Controller对应的method;
				* 返回method方法返回的内容;
			* 策略模式:
				* 每个@Controller都是Controller具体的实现类;
				* 使用反射技术, 调用具体的方法;

代码

介绍
* 老板根据任务类型, 把项目委派(delegate)给不同项目经理;
* 项目经理下发(despatcher)任务给程序员;
CODE
  • Employee
public class Employee {

	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public Employee(String name) {
		// TODO Auto-generated constructor stub
		this.name = name;
	}
	
	public void work(String workname){
		System.out.println("employee " + name + "  doing  " +workname);
	}
}
  • manager dispatcher
public class Manager {

	Employee e1 = new Employee("e1");
	Employee e2 = new Employee("e2");
	Employee e3 = new Employee("e3");
	
	
	public void dispatcher(String projectname){
		System.out.println("manager dispatch " + projectname);
		e1.work("cart");
		e2.work("user");
		e3.work("order");
	}
}
  • boss delegate
public class Boss {

	Manager m1 = new Manager();
	
	public void delegate(String projectname){
		System.out.println("boss delegate " + projectname);
		m1.dispatcher(projectname);
	}
}
  • test
	public static void main(String[] args) {
		Boss boss = new Boss();
		boss.delegate("e-commerce");
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值