设计模式--委派模式


    委派模式(DelegatePattern)的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在Spring中应用非常多,大家常用的DispatcherServlet其实就是用到了委派模式。委派模式不属于23种设计模式,在平常其他设计模式中可能也有体现。

    生活中很常见的例子,老板将任务派发给部门经理,经理拿到任务后再派发给具体的员工执行任务。

public interface IEmployee {
	public void work(String command) ;
}
public class EmployeeA implements IEmployee {
	@Override
	public void work(String command) {
		System.out.println("员工A,开始 " + command + " 工作");
	}
}
public class EmployeeB implements IEmployee {
	@Override
	public void work(String command) {
		System.out.println("员工B,开始 " + command + " 工作");
	}
}
public class Leader implements IEmployee {
	private Map<String, IEmployee> map = new HashMap<String, IEmployee>();
	public Leader() {
		map.put("加密", new EmployeeA());
		map.put("登录", new EmployeeB());
	}
	@Override
	public void work(String command) {
		// 根据不同的指令,将任务派发到不同的下属
		IEmployee iEmployee = map.get(command);
		if(iEmployee != null) {
			iEmployee.work(command);
		} else {
			System.out.println("没有能干活的下属了,只能leader自己做事了 ," + command);
		}
	}
}
public class Boss {

	public void command(String command, Leader leader) {
		leader.work(command);
	}
}
public class DelegateTest {

	public static void main(String[] args) {
		// 客户请求(Boss)、委派者(Leader)、被被委派者(Target)
		// 委派者要持有被委派者的引用
		// 代理模式注重的是过程, 委派模式注重的是结果
		// 策略模式注重是可扩展(外部扩展),委派模式注重内部的灵活和复用
		// 委派的核心:就是分发、调度、派遣
		// 委派模式:就是静态代理和策略模式一种特殊的组合
		new Boss().command("登录", new Leader());
		new Boss().command("加密", new Leader());
		new Boss().command("开发", new Leader());
	}
}

员工B,开始 登录 工作

员工A,开始 加密 工作

没有能干活的下属了,只能leader自己做事了 ,开发




设计模式 委派模式

2020.11.30 02:30

https://www.meihaocloud.com.com/1012.html , 欢迎转载,请在文章页标出原文连接 !


Copyright © 2020 千夕网 联系站长

粤公网安备 44030302001408号 粤ICP备19099833号-1