本文节选自《设计模式就该这样学》

1 雇工模式的定义

雇工模式(Employee Pattern)也叫作仆人模式(Servant Pattern),属于行为型设计模式,它为一组类提供通用的功能,而不需要类实现这些功能,也是命令模式的一种扩展。

2 雇工模式的应用场景

在日常开发过程中,我们可能已经接触过雇工模式,只是没有把它抽取出来,也没有汇编成册。或许大家已经看出这与命令模式非常相似,其实雇工模式是命令模式的一种简化,但更符合实际需要,更容易进入开发场景中。

3 雇工模式的UML类图

雇工模式的UML类图如下图所示。

由上图可以看到,雇工模式主要包含3个角色。

(1)抽象服务提供者(Serviced):用于定义服务内容的接口。

(2)具体服务提供者(ConcreteServiced):实现所有的服务内容。

(3)雇工(Servant):即执行者,用于执行服务。

4 雇工模式的通用写法

以下是雇工模式的通用写法。


public class Client { public static void main(String[] args) {
Servant servant = new Servant();
servant.service(new ConcreteServiced1());
servant.service(new ConcreteServiced2());
}
/**
* 通用功能
*/
interface IServiced {
//具有的特质或功能
public void serviced();
} /**
* 具体功能
*/
static class ConcreteServiced1 implements IServiced {
public void serviced(){
System.out.println("Serviced 1 doing");
}
} static class ConcreteServiced2 implements IServiced{
public void serviced(){
System.out.println("Serviced 2 doing");
}
} /**
* 雇工类
*/
static class Servant {
//服务内容
public void service(IServiced serviceFuture){
serviceFuture.serviced();
}
} }

5 雇工模式的优点

扩展性良好,可以很容易地增加雇工来执行新的任务。

6 雇工模式的缺点

增加了程序的复杂度。

关注微信公众号『 Tom弹架构 』回复“设计模式”可获取完整源码。

【推荐】Tom弹架构:30个设计模式真实案例(附源码),挑战年薪60W不是梦

本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!

如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。关注微信公众号『 Tom弹架构 』可获取更多技术干货!

最新文章

  1. sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法
  2. jcFeather Maya 羽毛插件
  3. C语言全局变量那些事儿
  4. iOS 阶段学习第十天笔记(字符串操作)
  5. [HB2014 Week5] Allot 人员分配
  6. android studio logcat 换行(日志换行)
  7. 夺命雷公狗---DEDECMS----21dedecms按照地区取出电影内容
  8. 【MySQL】MHA部署与MasterFailover代码分析
  9. Jquery源码中的Javascript基础知识(一)
  10. CUDA学习资料分享(随时更新)
  11. mysql performance schema的即时诊断工具-邱伟胜
  12. 【Linux远程管理】SSH协议远程管理
  13. Neral的前言
  14. SQL2012还原数据库操作在本地服务器上操作和用别的电脑远程连接到服务器进行操作的文件路径差异
  15. java基础:学生管理系统
  16. MySQL事务锁问题-Lock wait timeout exceeded
  17. SQL Server 2017 安装详解
  18. PHP幸运大转盘源码,支持ThinkPHP
  19. [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html
  20. REST风格的应用程序实现

热门文章

  1. uoj22 外星人(dp)
  2. Vulnhub实战-Dockhole_2靶机👻
  3. iostream 操作符
  4. java的加载与执行原理剖析
  5. Less-(5~7) error based
  6. 【UE4 C++】 解析与构建 Json 数据
  7. Redis:学习笔记-01
  8. 第0次 Beta Scrum Meeting
  9. [no code][scrum meeting] Alpha 6
  10. FreeRTOS学习笔记——FreeRTOS 任务基础知识