委派模式

类似于:老板将工作给了项目经理,项目经理委托给不同的员工,但是项目经理与员工实现相同的接口,调用相同的方法,只是项目经理在该方法中,寻找一个员工去工作,而员工才是真正干活的人。

两个角色,委托人与受托人,他们的地位是平等的,也就是都实现相同的接口,使用相同的方法。

委派模式与代理模式的区别:

委派模式是,老板告诉项目经理,指定谁完成工作,项目经理就去安排该员工工作。该员工完成后,将结果交给项目经理,项目经理交给老板。也就是说,只需要给结果就可以了,不关心具体实现。

代理模式是,代理对象跟踪任务完成的每个细节,关注过程。

委派模式与工厂模式区别:

委派模式:老板或者用户知道那个干活的人。

工厂模式:不知道哪个工厂或哪个人干活,我只要结果。


代码:

1)定义公司的工作方法接口:

package com.gupaoedu.vip.delegate;

//

public interface IExector {

//普通员工执行任务

//在公司中,员工执行任务

//规定在一周之内必须完成

void doing();

}


2)定义2个底层员工

package com.gupaoedu.vip.delegate;

//想法,用代码来描述这种想法?

//所以,写得比较简单

public class ExectorA implements IExector {

@Override

public void doing() {

System.out.println("员工A开始执行任务");

}

}

package com.gupaoedu.vip.delegate;

public class ExectorB implements IExector{

@Override

public void doing() {

System.out.println("员工B开始执行任务");

}

}

3)定义一个项目经理,该项目经理根据传入的员工,去调用员工完成工作。

package com.gupaoedu.vip.delegate;

public class Dispatcher implements IExector{

IExector exector;

Dispatcher(IExector exector){

this.exector = exector;

}

//项目经理,虽然也有执行方法

//但是他的工作职责是不一样的

public void doing() {

this.exector.doing();

}

}

4)测试类:

package com.gupaoedu.vip.delegate;

public class DispatcherTest {

public static void main(String[] args) {

Dispatcher dispatcher = new Dispatcher(new ExectorA());

//看上去好像是我们的项目经理在干活

//但实际干活的人是普通员工

//这就是典型,干活是我的,功劳是你的

dispatcher.doing();

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 委派模式 委派模式(Delegate)原理:类B和类A是两个互相没有任何关系的类,但是B具有和A一模一样的方法和属...
    普明子阅读 296评论 0 0
  • 委派模式(Delegate Pattern)的基本作用就是负责任务的调用和分配,跟代理模式很像,可以看做是一种特殊...
    vincent浩哥阅读 225评论 0 0
  • 一句话总结 干活是你的(普通员工),功劳算我的(项目经理) 内容 不是23中设计模式的一种,是静态代理和策略模式的...
    剑道_7ffc阅读 122评论 0 0
  • 委派模式有点像代理模式又有点像策略模式。 例如:公司老板给项目经理下达任务,将任务全权交给项目经理,由项目经理根据...
    浪漫宇宙与人间日常阅读 317评论 0 0
  • 什么是委派模式 委派模式为了解决复制任务的调用及分发。现实中简单的委派模式,老板提出一个需求给领导,然后领导根据手...
    呀哎_cee6阅读 1,189评论 0 1