Spring常用到的几种设计模式--委派模式

一、委派模式

委派模式的特点:

  1. 持有被委托人的引用
  2. 不关心过程,只关心结果

委派模式和代理模式很像,真的超级无敌像。对于不懂的人来说,真的很难区分。

你只要记住它两唯一的不同之处就在于:代理模式关心过程。 委派模式关心结果。

还是之前说的那个媒婆找对象的例子,你找媒婆帮你寻求对象,你肯定要关心他找的是男是女吧?肯定要知道那女的长得好不好看吧?你肯定要知道媒婆拿着你的个人信息做了啥吧?不然拿着你的身份证把你卖了?

那么回到我们的委派模式,举个例子,你的项目经理和你的关系就是一种委派模式,你是委托人、你领导是受托人

你领导给你分配一个任务,三天之内完成,他不管你用什么方法,反正三天之后想到看到结果。不管你这三天是不是都在写代码,反正三天到了你要给我完成任务。他关心的是结果。

看代码吧,模式这东西确实有点难分。关键还是要看个人理解。

在这里插入图片描述

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();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值