【课堂笔记】委派模式及策略模式.pdf
学习demo

委派模式

根据文档可知,委派模式和代理模式相似,但代理模式注重过程,而委派模式更注重结果(思想上的一点差异)

image.png

委派模式的基本作用就是负责任务的调度和分配任务 场景:

  • 类加载的双亲委派机制
  • SpringMVC的DispatcherServlet
  • Spring中bean解析的BeanDefinitionParserDelegate

策略模式

image.png

策略模式是对算法的封装。定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换 优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。 缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

场景:

  • Spring中Aop代理策略createAopProxy(下文讲解)
  • Spring的对象实例化策略InstantiationStrategy

两者区别:

  • 委派模式中委派者和被委派者实现了同一个接口,
  • 策略模式中容器只是算法策略的选择切换所在,不需要实现策略接口

小故事理解:

前几天公司所在的地方要拆迁,所以只能搬办公室,大家都得帮忙不是,经理也要去深圳出差,就直接告诉HR让她负责,于是HR就开始分配任务,男生负责搬运东西,女生负责清洁,其他的同学就干干杂物,所以搬家公司一把东西搬到新办公室,大家就听HR指挥了,HR看到灯管要换一下,那么这个任务就要交给男生了,看到玻璃脏了,那么这个任务就要交给女生。
到下午的时候,HR收到了中通快递的短信,可能买了一些新办公室需要的东西,要去快递柜那边拿,刚好闲着,于是HR把她的短信给我,让我领一下。到了那边,看到快递柜是很大的那种分区的,有中通快递的,有申通快递的,但是取货机是只有一个的,我输了取货码,然后跑到中通快递所在的区,”呯”!,果然这边的快递门开了,好神奇!
分析:

  • 分配任务中,HR是委派者,男生女生是被委派者
  • 去取快递时,HR是目标对象,我是代理对象,短信是目标对象的引用
  • 取快递中,取货机是容器,不同快递的取货码是不同的算法策略