一篇博客读懂设计模式之—委派模式

委派模式可能大家听起来不太熟悉,但是在代码开发的时候却很好用,下面从几个方面来介绍一下

what:是什么?
委派模式:顾名思义,委托其他对象或者实例来帮我们完成任务,既然有委托,那么就有两种角色:委托类和受托类,这两个角色在社会上的关系是平等的,类似于我们现实中的产品经理和普通员工的关系,产品经理委托员工来帮他完成任务,产品经理只关心结果:你做好没?至于怎么做他并不关心,典型的干活的是你(普通员工)成功是我的(项目经理),委派模式也是只关心结果。

why:为什么会出现这种模式:为了隐藏一些具体的实现逻辑

区别:
与其他模式有什么不同;
工厂模式:为了保证结果的多样性,但是对于用户来说只有一个方法,它是一种有固定模式的委派模式,工厂模式有属于自己的一些固定模板,如下:


不理解的可以去参考我的另一篇博客:一篇博客读懂设计模式之—工厂模式

**代理模式:**虽然代理模式也是设计到两个对象之间的关系,并且代理对象要持有被代理对象的引用,但是 代理模式更关心的是执行的过程,而委派模式只关心结果,并且委派模式的两个对象地位是平等的,都要实现同一个接口!

下面举个例子让你更好的理解委派模式:
先实现一个接口Executor;

public interface Executor {void executing();
}

实现两个受托类:

public class StaffA implements Executor {@Overridepublic void executing() {System.out.println("staff A executor task!");}
}
public class StaffB implements Executor {@Overridepublic void executing() {System.out.println("staffB execute task");}
}

再添加一个委托类:

public class Boss implements Executor {private  Executor executor;//这个构造方法是关键Boss(Executor executor){this.executor = executor;}@Overridepublic void executing() {System.out.println("boss start dispatcher job!");//看上去好像是我们的项目经理在干活//但实际干活的人是普通员工//这就是典型,干活是我的,功劳是你的executor.executing();}
}

最后添加一个测试类:

public class TestExecutor {public static void main(String[] args) {Boss boss = new Boss(new StaffA());boss.executing();Boss boss1 = new Boss(new StaffB());boss1.executing();}
}

从上面的测试类我们可以看出,虽然表面看起来是Boss在干活,但是实际上是对应的员工在干活(通过构造器传入需要干活的员工)

任务完成!
欢迎留言点赞!!

一篇博客读懂设计模式之---委派模式相关推荐

  1. 教你如何一篇博客读懂设计模式之—--原型模式

    教你如何一篇博客读懂设计模式之----原型模式 what:是什么 原型模式: 用于创建重复的对象,既不用一个属性一个属性去set和get,又不影响性能,原型模式产生的对象和原有的对象不是同一个实例,他 ...

  2. 教你如何一篇博客读懂设计模式之—--工厂模式

    一篇博客读懂设计模式之-工厂模式 工厂模式在我们日常开发的时候经常用到,相信大家都有了一定的了解,工厂模式是一种创建对象的设计模式,它提供一种创建对象的最佳方式. 主要过程是: 定义一个创建对象的接口 ...

  3. 一篇博客读懂设计模式之---模板方法模式

    设计模式之模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 简而言之就是:父类定义了骨架(调用哪些方法及其 ...

  4. 一篇博客读懂设计模式之-----策略模式

    设计模式之策略模式 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的对象 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换. 主要解决:在有多种算法相似的情况下 ...

  5. 一篇博客读懂设计模式之---工厂模式

    设计模式之-工厂模式 工厂模式: 创建过程: 创建Shape接口 public interface Shape {void draw(); } 创建实现类: public class Circle i ...

  6. 一篇博客读懂设计模式之---动态代理与反射

    一篇博客读懂设计模式之---动态代理与反射 先来讲一下反射: 1 关于反射 反射最大的作用之一就在于我们可以不用在编译时就知道某个对象的类型,而在运行时通过提供完整的"包名+类名.class ...

  7. 一篇博客读懂设计模式之---单例模式

    一篇博客读懂设计模式之---单例模式 一.  单例模式 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处 ...

  8. [入门篇]用史上最生动的方式让你一篇博客搞懂Linux进程地址空间,包看包懂!

    目录 0.前言 1.初始程序的地址空间划分 1.1程序地址空间图解 1.2程序地址空间区域划分验证 1.3 程序地址空间小补充 1.4 引入进程地址空间 *2. 两个生动的例子理解进程地址空间 2.1 ...

  9. 1小时搞懂设计模式之委派模式

    1 什么是委派模式 委派模式 我们可以理解成上级分配任务到具体的员工,比如说您是一个大老板 手下有上千个员工,平常端茶递水的活肯定不是自己干.一般口渴了 就会跟下面经理说:小张啊 我口渴了给我倒点茶! ...

最新文章

  1. js的object的key需要引号吗,JavaScript中对象是否需要加引号?
  2. Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading
  3. 某程序员吐槽一程序员大佬竟然放弃百度offer,回老家进烟草公司!是不是脑子有坑?网友:你才脑子有坑!...
  4. Leetcode 面试题 01.01. 判定字符是否唯一 (每日一题 20211012)
  5. EASYSIZE备份
  6. HDU 5608 function(莫比乌斯反演 + 杜教筛)题解
  7. 论文管理:zotero的安装和插件使用
  8. 在Colaboratory中使用ImageAI训练自己的数据集
  9. linux mv移动文件命令详解与替换强制覆盖多个文件
  10. 每日一题:1.function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastNa
  11. VMware网络NAT模式无法连接解决方法
  12. 回忆做嵌入式软件的几年
  13. java 印章 方_用Java实现支持圆形带五角星 方形电子印章
  14. 83.【JQuery.Ajax】
  15. vue 项目中页面打印实现(去除页眉页脚)
  16. 关于Mongodb的全面总结
  17. PartNet: A Recursive Part Decomposition Network for Fine-grained and Hierarchical Shape Segmentation
  18. 网络营销几种简单的反复(下)
  19. 精品课 - Python 基础
  20. 小程序实现文字两端对齐

热门文章

  1. Redis中的键值过期操作
  2. 聊聊excel生成图片的几种方式
  3. 如何在CDH5上部署Dolphin Scheduler 1.3.1
  4. python http 返回json中文乱码
  5. 蓝桥杯 标题:纵横火柴旗子
  6. linux资源隔离是哪些,【转载】Linux cgroup资源隔离各个击破之
  7. vc读取北通手柄按键_《噬血代码》手柄怎么操作 北通手柄按键功能详解
  8. input框传值是怎么才能是整形_做了这些项目,到底多久才能化妆?
  9. mysql永远不用utf8_永远不要在 MySQL 中使用「utf8」
  10. 腾讯视频怎样开启深色模式保护眼睛