一、委派模式
委派模式的特点:
- 持有被委托人的引用
- 不关心过程,只关心结果
委派模式和代理模式很像,真的超级无敌像。对于不懂的人来说,真的很难区分。
你只要记住它两唯一的不同之处就在于:代理模式关心过程。 委派模式关心结果。
还是之前说的那个媒婆找对象的例子,你找媒婆帮你寻求对象,你肯定要关心他找的是男是女吧?肯定要知道那女的长得好不好看吧?你肯定要知道媒婆拿着你的个人信息做了啥吧?不然拿着你的身份证把你卖了?
那么回到我们的委派模式,举个例子,你的项目经理和你的关系就是一种委派模式,你是委托人、你领导是受托人。
你领导给你分配一个任务,三天之内完成,他不管你用什么方法,反正三天之后想到看到结果。不管你这三天是不是都在写代码,反正三天到了你要给我完成任务。他关心的是结果。
看代码吧,模式这东西确实有点难分。关键还是要看个人理解。
EmployeeA
/*
* Copyright (C), 2013-2019, 天津大海云科技有限公司
*/
package com.jikang.delegate;
/**
* 员工
*
* @author yangjikang
* @date 2019/8/8 17:59
* @modified By yangjikang
* @since
*/
public class EmployeeA implements IDelegate{
@Override
public void doing() {
System.out.println("第一天看看电影");
System.out.println("第二天写写代码");
System.out.println("第三天写写代码");
}
}
EmployeeB
/*
* Copyright (C), 2013-2019, 天津大海云科技有限公司
*/
package com.jikang.delegate;
/**
* 员工
*
* @author yangjikang
* @date 2019/8/8 17:59
* @modified By yangjikang
* @since
*/
public class EmployeeB implements IDelegate{
@Override
public void doing() {
System.out.println("第一天看看电影");
System.out.println("第二天看看电影");
System.out.println("第三天写写代码");
}
}
IDelegate
/*
* Copyright (C), 2013-2019, 天津大海云科技有限公司
*/
package com.jikang.delegate;
/**
* @author yangjikang
* @date 2019/8/8 18:01
* @modified By yangjikang
* @since
*/
public interface IDelegate {
void doing();
}
Leader
/*
* Copyright (C), 2013-2019, 天津大海云科技有限公司
*/
package com.jikang.delegate;
/**
* 领导
*
* @author yangjikang
* @date 2019/8/8 17:59
* @modified By yangjikang
* @since
*/
public class Leader implements IDelegate{
private IDelegate iDelegate;
public Leader(IDelegate iDelegate) {
this.iDelegate = iDelegate;
}
@Override
public void doing() {
this.iDelegate.doing();
}
}
Test
/*
* Copyright (C), 2013-2019, 天津大海云科技有限公司
*/
package com.jikang.delegate;
/**
* @author yangjikang
* @date 2019/8/9 9:25
* @modified By yangjikang
* @since
*/
public class Test {
public static void main(String[] args) {
Leader leader = new Leader(new EmployeeB());
leader.doing();
}
}