源码中用到的设计模式

本文详细探讨了Java中常见的设计模式,包括创作模式的抽象工厂、建造者、工厂和单例模式,结构模式的适配器、桥接、组合、装饰器、门面和享元模式,以及行为模式的责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略和模板方法。通过对各种模式的实例分析,揭示了它们在实际代码中的应用和价值。
摘要由CSDN通过智能技术生成

目录

创作模式

抽象工厂模式

建造者模式

工厂模式

原型模式

单例模式

结构模式

适配器模式

桥接模式

组合模式

装饰器模式

门面模式

享元模式

代理模式

行为模式

责任链模式

命令模式

解释器模式

迭代器模式

中介者模式

备忘录模式

观察者模式

状态模式

策略

模板方法


创作模式

抽象工厂模式

通过创造性的方法来识别工厂本身,这又可以用于创建另一个抽象/接口类型

javax.xml.parsers.DocumentBuilderFactory#newInstance()

javax.xml.transform.TransformerFactory#newInstance()

javax.xml.xpath.XPathFactory#newInstance()

建造者模式

通过创建方法识别返回实例本身

java.lang.StringBuilder#append() (非线程安全)

java.lang.StringBuffer#append() (线程安全)

java.nio.ByteBuffer#put()(还CharBuffer,ShortBuffer,IntBuffer,LongBuffer

FloatBuffer和DoubleBuffer)

javax.swing.GroupLayout.Group#addComponent()

所有的实现 java.lang.Appendable

mybatis的SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder

工厂模式

可通过创建方法识别返回抽象/接口类型的实现

java.util.Calendar#getInstance()

java.util.ResourceBundle#getBundle()

java.text.NumberFormat#getInstance()

java.nio.charset.Charset#forName()

java.net.URLStreamHandlerFactory#createURLStreamHandler(String) (每个协议返回单例对象)

java.util.EnumSet#of()

javax.xml.bind.JAXBContext#createMarshaller() 和其他类似的方法

mybatis的SqlSessionFactory、ObjectFactory、MapperProxyFactory

Spring的BeanFactory和FactoryBean

原型模式

通过创建方法识别,返回具有相同属性的其他实例

java.lang.Object#clone()(必须实施java.lang.Cloneable)

单例模式

通过创造性方法识别,每次返回相同的实例(通常是自己)

java.lang.Runtime#getRuntime()

java.awt.Desktop#getDesktop()

java.lang.System#getSecurityManager()

mybatis的ErrorContext和LogFactory

Spring依赖注入Bean实例默认是单例的

结构模式

适配器模式

可通过创建方法识别采用不同抽象/接口类型的实例,并返回自己/另一个抽象/接口类型的实现,其装饰/覆盖给定实例

java.util.Arrays#asList()

java.util.Collections#list()

java.util.Collections#enumeration()

java.io.InputStreamReader(InputStream)(返回a Reader)

java.io.OutputStreamWriter(OutputStream)(返回a Writer)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值