2021-07-26委派模式与策略模式

2021-07-27  本文已影响0人  竹blue

委派模式—用户调用委派对象,由委派对象将任务进行分配。(委派对象选择调用具体的对象去处理任务)

定义

委派模式(Delegate Pattern):作用是负责任务的调度和任务分配,将任务的分配和执行分开,可以认为是一种特殊情况的静态全权代理属于行为模式

注意:静态代理是结构模式,委派模式是行为模式

应用场景

通用写法

委派模式.png

应用场景

ClassLoader.loadClass()

DefaultBeanDefinitionDocumentReader.XX()—delegate //TODO

委派模式优缺点

优点:

通过任务委派能够将一个大型的任务细化,然后通过统一管理这些子任务的完成情况实现任务的跟进,能够加快任务执行的效率。

缺点:

任务委派方式需要根据任务的复杂程度进行不同的改变,在任务比较复杂的情况下可能需要进行多重委派,容易造成紊乱

比较

委派与代理的区别.png

问题:

举例Spring源码中你见过的委派模式,并画出类关系图

策略模式

定义

策略模式(Strategy Pattern):将定义的策略集合分别封装起来,使得他们之间可以互相替换,从而让策略的变化不会影响到使用策略的用户,可以避免多重if ... else ... 和switch语句。属于行为型模式。策略模式通过使用面向对象的继承和多态机制,从而实现同一行为在不同场景下具备不同实现

适用场景

通用写法--选择权在用户(单一委派,一般情况下策略模式和委派模式结合使用)

策略模式主要包含三种角色:

注意:策略模式中的上下文环境,其职责是隔离客户端与策略类的耦合,让客户端完全与上下文环境沟通,无需关系具体策略。

策略模式.png

策略一般与简单工厂、委派模式结合使用

策略模式前提是用户需要知道有哪些策略

//TODO 两个案例演示

策略模式的优缺点

优点:

缺点:

源码使用

Comparator.compare()——比较器(策略)

Arrays.sort().compare()(策略实现)

策略模式的特点:用户选择一种策略进行使用。

问题

利用策略模式重构一段业务代码。

上一篇下一篇

猜你喜欢

热点阅读