当前位置:首页 > 投稿丫空间 > 会场布置ppt|设计模式之委派模式

会场布置ppt|设计模式之委派模式

2023-01-04 13:10:26 发表

丫空间介绍 ·丫空间(www.yaspace.cn),全国性活动内容平台,涉及展览展示、会议、庆祝活动、团建拓展、私人活动、竞技赛事、拍摄等各类活动图文、短视频内容的记录、传播。 ·用户通过丫空间可以浏览、筛选各类活动内容、活动商家、活动资源;商家通过丫空间可以发布、分享场地或业务信息、活动图文、短视频等活动内容进行市场营销。 ,丫空间已汇聚特色场地,虚拟空间,秀场/发布中心:艺术/展览馆,演出场馆。会所/俱乐部,公寓别墅/美趴,商场/步行街,酒店/度假村,影棚/演播厅,体育场馆,户外/广场。婚礼/宴会场地 会议中心,会展中心、剧场/剧院,众创空间/路演,会议室/培训厅,咖啡/书店、酒吧/餐厅、游船/游艇等全国各类场地资源。

委派模式的表现形式:如公司老板想举办年会,这个时候,需要很多人员参与配合,需要有人写PPT,需要有人布置会场,需要有人采购,还需要有人宣传等。这个时候,老板本人并不知道公司有哪些同事擅长做这些事情,于是,老板就将这个艰巨的任务交给了HR会场布置ppt,然后让HR给安排合适的任选进行工作的进行。

这就是一个比较简单易懂的委派模式的表现。

那么,看到这个,是不是感觉这个案例,似乎有那么一点点熟悉,这不是代理模式的表现形式吗?

嗯,先不急,我们就以上面提到的例子编写一个代码实例来看看。

首先,我们先定义一个boss,然后boss想做的事情呢,就是准备一下,好好开一个年会。

/**
 * 老板想要筹备开年会,需要进行准备工作
 */
public interface Boss {
    // 分享相关员工进行年会准备
    void workAllot(String workName);
}

然后,我们再来定义一个HR小姐姐,因为HR小姐姐对每个员工相对比较熟悉,知道大家擅长做什么,方便给大家分配任务,从而把年会举办的更好。

/**
 * HR小姐姐
 */
public class HrGirl implements Boss {
    HashMap target = new HashMap<>();
    public HrGirl() {
        target.put("写PPT文案", new ZhangSan());
        target.put("宣传策划", new LiSi());
        target.put("布置会场", new WangWu());
        target.put("物资采购", new ZhaoLiu());
    }
    @Override
    public void workAllot(String workName) {
        target.get(workName).workAllot(workName);
    }
}

如上代码所示,我们先定义一个Map容器,key为工作内容,value为员工实例,使用其父类的引用来接收。当执行其workAllot方法时,则根据工作内容查找出善于做这一块的员工实例,进一步交由员工来处理当前事件。

定义好了HR小姐姐后,我们再来快速定义四位员工出来。

public class ZhaoLiu implements Boss {
    @Override
    public void workAllot(String workName) {
        System.out.println("大家好,我是员工赵六,我负责进行:" + workName + " 工作");
    }
}

public class WangWu implements Boss {
    @Override
    public void workAllot(String workName) {
        System.out.println("大家好,我是员工王五,我负责进行:" + workName + " 工作");
    }
}

public class LiSi implements Boss {
    @Override
    public void workAllot(String workName) {
        System.out.println("大家好,我是员工李四,我负责进行:" + workName + " 工作");
    }
}

public class ZhangSan implements Boss {
    @Override
    public void workAllot(String workName) {
        System.out.println("大家好,我是员工张三,我负责进行:" + workName + " 工作");
    }
}

这样,我们代码就编写完成了,下面我们再来编写一个测试类来测试一下效果;

@Test
public  void test() {
    HrGirl hr = new HrGirl();
    hr.workAllot("写PPT文案");
    hr.workAllot("布置会场");
    hr.workAllot("物资采购");
    hr.workAllot("宣传策划");
}

输入内容:

大家好,我是员工张三,我负责进行:写PPT文案 工作
大家好,我是员工王五,我负责进行:布置会场 工作
大家好,我是员工赵六,我负责进行:物资采购 工作
大家好,我是员工李四,我负责进行:宣传策划 工作

如上所示,根据需要做的工作内容会场布置ppt,然后交由相应员工来完成。但是整个过程中,最终幕后者boss并未参与进来,所有的工作都是HR小姐姐来处理的,HR小姐姐只是根据boss的需求来进行任务的分配。Boss并未参与到具体人员安排上面。

这就是委派模式。委派,即 委托安排;也就是boss委托hr来安排相关的事宜。

好了,我们再来看看委派模式和代理模式的相似处与不同处。我们知道,代理模式是由代理来帮你完成一些工作,而这里的委派模式,是由委派对象来帮你完成一些工作,字面上来看,好像并没有什么差别。那么,既然分为两种不同 的设计模式,那么它们俩之间肯定是有差别的。

首先,我们知道代理可以增强我们的代理目标类,比如,王婆帮西门庆安排了一场约会,这里的王婆,就是西门庆的代理了。但是,具体的参与约会的对象,依然是西门庆,而并不是王婆。所以,代理模式中,被代理类还是需要进行实际去参与行动。

而委派模式,像上面的例子,boss想举办一场豪华的年会,他只需要告诉HR小姐姐即可,接下来的所有的事情,都交给小姐姐去处理即可了,自己完全不必实际去参与到行动中。

这就是代理模式和委派模式的区别所在。

委派模式不属于我们常说的23种设计模式中,在java中,委派模式有很多的应用场景,比如:通过url访问到指定接口,通过接口名,找到xml中代码配置等等。一些广为人知的,比如:springmvc 访问地址的url与Controller层配置的url对应关系,通过url分配响应的Controller等。

相比较来说,委派模式原理结构较为清晰,学习起来也比较简单,在项目中应用场景也比较多。

2019年1月27日 21:17:56

以上内容为网友投稿,不代表丫空间立场。丫空间对内容的真实性和准确性不负责任。如有侵权或错误信息,请第一时间联系我们进行删除和修正。