美文网首页
行为型模式

行为型模式

作者: 陈菲TW | 来源:发表于2020-05-16 16:26 被阅读0次

1. 责任链模式

将对象连成一条链,并沿着这条链传递请求,直到有对象能够处理它。可以通过这样一个比喻理解:你要去给某公司借款1万元,当你来到柜台的时候向柜员发起 "借款 1 万元" 的请求时,柜员认为金额太多,处理不了这样的请求,他转交这个请求给他的组长,组长也处理不了这样的请求,那么他接着向经理转交这样的请求。

责任链可以用if else实现,但是if else的代码耦合度太高,如果我们需要新加入一个处理逻辑,则需要改动代码。责任链模式是创建多个processor类,并维护一个顺序的链条;每个processor类提供两个方法:canProcess、process;当canProcess返回true时,则调用其process方法。

代码里面经常会看到这样的逻辑。

2. 命令模式

命令模式,通常指的是一个对象向另一个对象发送信息指令的行为模型,比如父母命令孩子写作业、将军命令士兵进攻等。我们经过分析拆解方法会得到三个模块,首先得有命令发送方,接着是被传递的命令本身,最后就是命令的接收执行方了。好处是实现命令发送者与命令接收者之间的解耦。

🌰:遥控器是命令发送方;定义一系列指令即命令;电视机、空调等设备是命令接受者。

Hystrix作为断路器采用命令模式,其command抽象类HystrixCommand用于包装执行具有潜在风险功能的代码(通常指通过网络进行的服务调用),封装了命令运行逻辑(run)和服务调用失败时回退逻辑(getFallback)。当我们需要对新的服务用Hystrix管理时,只需要新声明一个command。

不使用命令模式的Hystrix 使用命令模式的Hystrix

3. 解释器模式 - interpreter

用于SQL解析、符号处理;输入是文法和表达式,输出是解析结果。

4. 迭代器模式

例子是Java中的Iterator。核心组建是container表示数据集合、Iterator作为container的一个组件提供遍历功能;Iterator接口的核心方法是hasNext和next。

5. 观察者模式

对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式有两个组件:观察者、被观察者(主题subject);代码示例如下:下面的例子中小美是备受关注的人,小王是观察者,小美通过调用小王的getMessage方法通知其状态更新。

observer Observable

Rxjava就是观察者模式的例子,其中配置Observable和Observer。RxJava是基于JVM的响应式扩展,实现异步、基于事件编程的库

6. 策略模式

它定义了算法家族,所有这些算法完成的都是相同的工作,只是实现不同;调用者使用相同的方式调用所有的算法,减少了各种算法类与调用者之间的耦合,使得不同算法可以互相替换,让算法变化不会影响到调用者。

各个算法通常以Strategy命名。

应用场景:分析过程中发现需要在不同情况下应用不同的业务规则,可考虑用策略模式处理。

7. 模版模式

相关文章

网友评论

      本文标题:行为型模式

      本文链接:https://www.haomeiwen.com/subject/vlmuihtx.html