设计模式学习(二)- 委派模式

1.委派模式表现形式

当前对象需要做一件事,但是并不知道具体怎么干,需要委托另一个对象分配任务
如班主任想要举办活动,但是不知道哪些同学擅长哪些运动,于是委托班长安排合适的运动给合适的同学。

2.委派模式UML图

在这里插入图片描述

3.委派模式实例

3.1 班主任(最高父接口)

package cn.liulin.algorithm.dhdesign.wp;

/**
 * cn.liulin.algorithm.dhdesign.wp$
 *
 * @author ll
 * @date 2021-03-24 15:58:17
 **/
public interface Person {
    void doSport(String sportName);
}

3.2 班长

package cn.liulin.algorithm.dhdesign.wp;

import java.util.HashMap;
import java.util.Map;

/**
 * cn.liulin.algorithm.dhdesign.wp$
 * 班长
 * @author ll
 * @date 2021-03-24 16:06:24
 **/
public class Monitor implements Person{

    private Map<String, Person> mapper = new HashMap<>();
    public Monitor() {
        mapper.put("篮球", new PhysicalEducation());
        mapper.put("唱歌", new MusicEducation());
    }

    @Override
    public void doSport(String sportName) {
        mapper.get(sportName).doSport(sportName);
    }
}

3.3 体育委员

package cn.liulin.algorithm.dhdesign.wp;

/**
 * cn.liulin.algorithm.dhdesign.wp$
 * 体育课代表
 * @author ll
 * @date 2021-03-24 16:08:48
 **/
public class PhysicalEducation implements Person{
    @Override
    public void doSport(String sportName) {
        System.out.println("体育委员开始做" + sportName + "的活动");
    }
}

3.4 音乐课代表

package cn.liulin.algorithm.dhdesign.wp;

/**
 * cn.liulin.algorithm.dhdesign.wp$
 * 音乐课代表
 * @author ll
 * @date 2021-03-24 16:10:34
 **/
public class MusicEducation implements Person{
    @Override
    public void doSport(String sportName) {
        System.out.println("音乐课代表开始做" + sportName + "的活动");
    }
}

3.5 执行

package cn.liulin.algorithm.dhdesign.wp;

/**
 * cn.liulin.algorithm.dhdesign.wp$
 *
 * @author ll
 * @date 2021-03-24 16:12:52
 **/
public class Sport {
    public static void main(String[] args) {
        Monitor monitor = new Monitor();
        monitor.doSport("篮球");
        monitor.doSport("唱歌");
    }
}

3.6 执行结果

体育委员开始做篮球的活动
音乐课代表开始做唱歌的活动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值