设计模式-委派模式

委派模式定义

委派模式的基本作用是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态带来的全权代理,但是代理模式注重过程,而委派模式注重结果。不属于23中设计模式之一,属于行为型模式。

现实生活中的委派事例

老板(Boss)给项目经理(Leader)下达任务,项目经理会根据实际情况给每个员工派发任务,待员工把任务完成后,再由项目经理向老板汇报结果。接下来用代码模拟这个业务场景

代码

创建Boss类下达命令

package com.wb.pattern.delegate.simple;

/**
 * @author wb
 * @date 上午11:21:42
 *
 */
public class Boss {
	/**
	 * 老板给经理下达命令
	 * @param command
	 * @param leader
	 */
	public void command(String command,Leader leader) {
		leader.doing(command);
	}
}

创建项目经理Leader类分配任务

package com.wb.pattern.delegate.simple;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wb
 * @date 上午11:22:18
 *
 */
public class Leader implements IEmployee{
	//预先知道每个员工的特征,员工A擅长加密,B员工擅长登录
	private Map<String, IEmployee> targets = new HashMap<String, IEmployee>();	
	public Leader() {
		targets.put("加密", new EmployeeA());
		targets.put("登录", new EmployeeB());
	}
	//项目经理自己不干活,找员工
	@Override
	public void doing(String command) {
		targets.get(command).doing(command);
	}
}

员工接口,里面有根据任务工作的方法

package com.wb.pattern.delegate.simple;
/**
 * @author wb
 * @date 上午11:18:39
 *
 */
public interface IEmployee {
	// 员工根据任务做工作
	public void doing(String command);
}

创建A员工,B员工

package com.wb.pattern.delegate.simple;
/**
 * @author wb
 * @date 上午11:19:29
 *
 */
public class EmployeeA implements IEmployee{	
	@Override
	public void doing(String command) {
		System.out.println("我是员工A,我现在开始工作,做" + command + "工作.");		
	}
}
package com.wb.pattern.delegate.simple;

/**
 * @author wb
 * @date 上午11:19:29
 *
 */
public class EmployeeB implements IEmployee{
	@Override
	public void doing(String command) {
		System.out.println("我是员工B,我现在开始工作,做" + command + "工作.");	
	}
}

测试类

package com.wb.pattern.delegate.simple;

public class DelegateTest {
	public static void main(String[] args) {
		new Boss().command("加密", new Leader());
		new Boss().command("登录", new Leader());	
	}
}

测试结果
测试结果
上面代码还原了项目经理分配任务的业务场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值