创建型模式、结构型模式和行为型模式_JDK中设计模式的运用:行为型

上篇文章我们了解了JDK中创建型和结构型模式的运用, 那么接着我们一起看下行为型模式。

01

dd05e895a7dbf1863c0a91099bc0bf2b.png

责任链模式

通过把请求从一个对象传递到链条中下一个对象的方式,直到请求被处理完毕,以实现对象间的解耦。

    • java.util.logging.Logger#log()
    • javax.servlet.Filter#doFilter()

02

dd05e895a7dbf1863c0a91099bc0bf2b.png

命令模式

将操作封装到对象内,以便存储,传递和返回。

    • java.lang.Runnable
    • javax.swing.Action

03

dd05e895a7dbf1863c0a91099bc0bf2b.png

解释器模式

这个模式通常定义了一个语言的语法,然后解析相应语法的语句。

    • java.util.Pattern
    • java.text.Normalizer
    • java.text.Format

04

dd05e895a7dbf1863c0a91099bc0bf2b.png

迭代器模式

提供一个一致的方法来顺序访问集合中的对象,这个方法与底层的集合的具体实现无关。

    • java.util.Iterator
    • java.util.Enumeration

05

dd05e895a7dbf1863c0a91099bc0bf2b.png

中介者模式

通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖。

    • java.util.Timer
    • java.util.concurrent.Executor#execute()
    • java.util.concurrent.ExecutorService#submit()
    • java.lang.reflect.Method#invoke()

06

dd05e895a7dbf1863c0a91099bc0bf2b.png

备忘录模式

生成对象状态的一个快照,以便对象可以恢复原始状态而不用暴露自身的内容。Date对象通过自身内部的一个long值来实现备忘录模式。

    • java.util.Date
    • java.io.Serializable

07

dd05e895a7dbf1863c0a91099bc0bf2b.png

空对象模式

这个模式通过一个无意义的对象来代替没有对象这个状态。它使得你不用额外对空对象进行处理。

    • java.util.Collections#emptyList()
    • java.util.Collections#emptyMap()
    • java.util.Collections#emptySet()

08

dd05e895a7dbf1863c0a91099bc0bf2b.png

观察者模式

它使得一个对象可以灵活的将消息发送给感兴趣的对象。

    • java.util.EventListener
    • javax.servlet.http.HttpSessionBindingListener
    • javax.servlet.http.HttpSessionAttributeListener
    • javax.faces.event.PhaseListener

09

dd05e895a7dbf1863c0a91099bc0bf2b.png

状态模式

通过改变对象内部的状态,使得你可以在运行时动态改变一个对象的行为。

    • java.util.Iterator
    • javax.faces.lifecycle.LifeCycle#execute()

10

dd05e895a7dbf1863c0a91099bc0bf2b.png

Spring-涉及到的设计模式汇总

使用这个模式来将一组算法封装成一系列对象。通过传递这些对象可以灵活的改变程序的功能。

    • java.util.Comparator#compare()
    • javax.servlet.http.HttpServlet
    • javax.servlet.Filter#doFilter()

11

dd05e895a7dbf1863c0a91099bc0bf2b.png

模板方法模式

让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。

    • java.util.Collections#sort()
    • java.io.InputStream#skip()
    • java.io.InputStream#read()
    • java.util.AbstractList#indexOf()

12

dd05e895a7dbf1863c0a91099bc0bf2b.png

访问者模式

提供一个方便的可维护的方式来操作一组对象。它使得你在不改变操作的对象前提下,可以修改或者扩展对象的行为。

    • javax.lang.model.element.Element and javax.lang.model.element.ElementVisitor
    • javax.lang.model.type.TypeMirror and javax.lang.model.type.TypeVisitor

本文我们一起了解了在JDK中使用的到的设计模式:行为型模式,下一篇我们一起看看设计模式在Mybatis中的运用。

ps:IT技术、架构、职场、有意思的事儿,请关注我的公众号360linker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值