委派模式

任何知识点都需要弄清楚三件事情:

  1. 是什么
  2. 为什么
  3. 怎么做

是什么(what)

两个角色,委托人和受托人(社会关系平等)
公司里面:项目经理,普通员工(法律上平等,工作的关系,各自的职责不同)
干活是我的,功劳是你的(最重要的特点)
项目经理(委托人):主要职责是安排任务
普通员工(受托人):主要职责是执行任务

特点:
1.类似于中介的功能(委托机制)
2.持有被委托人的引用
3.不关心过程,只关心结果

为什么(why)

主要目的就是隐藏具体的实现逻辑
下面描述一下Spring使用委派模式的场景:
IOC容器中,有一个Register的东西(为了告诉我们的容器,在这个类被初始化的过程中,需要做很多不同的业务逻辑,需要实现多个任务执行者,分别实现各自的功能),保证结果的多样性,对于用户来是只有一种方法。

怎么做(how)

首先,创建一个接口,以及三个实现类,代码如下:

public interface IExector {
    /**
     * 普通员工执行
     * 在公司中,员工执行任务
     * 规定在一周之内必须完成
     */
    void doing();
}

/**
 * 想法,用代码来描述这种想法
 * 因此代码写得很简单
 *
 */
public class ExectorA implements IExector{

    @Override
    public void doing() {
        System.out.println("员工A执行任务");
    }

}

public class ExectorB implements IExector{

    @Override
    public void doing() {
        System.out.println("员工B执行任务");
    }

}

public class Dispatcher implements IExector{

    IExector exector;

    public Dispatcher(IExector exector) {
        this.exector = exector;
    }

    //项目经理,虽然也有执行方法
    //但是他的工作职责是不一样的
    @Override
    public void doing() {
        this.exector.doing();
    }

}

其中,Dispatcher类相当于项目经理,ExectorA类和ExectorB类相当于员工A和员工B,当老板需要项目经理完成事情的时候,项目经理让员工A或员工B来完成。

然后看看测试类DispatcherTest,如下:

public class DispatcherTest {
    public static void main(String[] args) {
        Dispatcher dispatcher = new Dispatcher(new ExectorA());
        //看上去好像是我们的项目经理在干活,实际干活的是普通员工
        //典型就是,干活是我的,功劳是你的
        dispatcher.doing();
    }
}

//执行结果
员工A执行任务
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值