Java设计模式
文章平均质量分 95
23种常用设计模式整理
Binary Oracle
一名热爱开源和技术的Coder , 开源框架spring committer , golang开源网络库netpoll committer; (脱产备战25考研中,停更一年)
展开
-
设计模式之规约模式
规约模式原创 2023-05-23 23:56:50 · 470 阅读 · 0 评论 -
设计模式终章----手写IOC容器
手写IOC容器Spring核心架构Bean概述Spring IOC相关接口分析BeanFactory接口BeanDefinition接口BeanDefinitionReader接口BeanDefinitionRegistry 接口SimpleBeanDefinitionRegistry---简单的bean注册中心DefaultListableBeanFactory探究创建容器手写SpringIOC容器定义Bean相关的Pojo类PropertyValue类MultablePropertyValues类S原创 2021-09-17 09:51:09 · 1569 阅读 · 84 评论 -
设计模式----责任链模式
责任链模式引言责任链模式定义类图角色核心示例代码1、对请求处理者的抽象2、对请求处理者的抽象3、责任链的创建责任链实现请假案例案例类图可扩展性纯与不纯的责任链模式纯的责任链模式不纯的责任链模式责任链模式主要优点职责链模式的主要缺点适用场景模拟实现Tomcat中的过滤器机制运行过程如下分析Tomcat 过滤器中的责任链模式参考文章引言一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现。以原创 2021-09-13 17:27:36 · 1858 阅读 · 97 评论 -
设计模式---策略模式
策略模式为什么使用策略模式?策略模式包含角色策略模式的类图排序案例策略模式的优点策略模式的缺点适用场景源码分析策略模式的典型应用Java Comparator 中的策略模式参考文章为什么使用策略模式?实现某一个功能有多条途径,每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径。策略模式包含角色 Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,原创 2021-09-12 13:39:54 · 610 阅读 · 0 评论 -
设计模式---状态模式
状态模式状态模式的结构状态模式的角色示例代码适用场景投票案例认识状态模式状态和行为行为的平行性环境和状态处理对象状态模式优点状态模式的缺点状态模式和策略模式对比参考文章状态模式的结构用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式的示意性类图如下所示:状态模式的角色 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态原创 2021-09-12 12:36:24 · 199 阅读 · 0 评论 -
设计模式----解释器模式
解释器模式介绍角色解释器模式实现后缀表达式例子类图如下解释器模式总结主要优点主要缺点适用场景解释器模式的典型应用Spring EL表达式中的解释器模式参考文章介绍解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的 “语言” 是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。角色AbstractExpression(抽象表达式):在抽象表达式中声明了抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。Te原创 2021-09-11 16:49:38 · 303 阅读 · 0 评论 -
设计模式---备忘录模式
备忘录模式引言备忘录模式(Memento Pattern)角色为什么会出现守护者对象(负责人)?备忘录模式实现框架下棋案例备忘录模式总结优点缺点适用场景注意细节参考文章引言备忘录模式经常可以遇到,譬如下面这些场景: 浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头回退到上一次的页面,然后也可以点击右箭头重新回到当前页面 数据库备份与还原:一般的数据库都支持备份与还原操作,备份即将当前已有的数据或者记录保留,还原即将已经保留的数据恢复到对应的表中 编辑器撤原创 2021-09-11 15:17:20 · 338 阅读 · 0 评论 -
设计模式---中介者模式
中介者模式一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-09-10 10:36:50 · 751 阅读 · 0 评论 -
设计模式----七大原则和UML类图
设计模式设计模式常用七大原则单一职责原则单一职责原则的注意事项和细节设计模式常用七大原则单一职责原则单一职责原则的注意事项和细节原创 2021-08-30 15:39:12 · 731 阅读 · 0 评论 -
设计模式---桥接模式
桥接模式业务场景1.0简化版本1.0版本代码实现2.0版本:实现发送加急消息2.0版本代码实现问题分析问题总结桥接模式介绍模式结构角色理解抽象化与实现化脱耦的概念桥接模式示例代码应用桥接模式来解决的思路使用桥接模式重写示例添加功能深入理解桥接模式什么是桥接为何需要桥接如何桥接动态变换功能退化的桥接模式桥接模式和继承谁来桥接1:由抽象部分的对象自己来创建相应的Implementor的对象2:在Abstraction中创建缺省的Implementor对象3:使用抽象工厂或者是简单工厂4:使用IoC/DI的方式反原创 2021-09-01 22:35:21 · 823 阅读 · 101 评论 -
设计模式----模板方法模式
模板方法模式模板方法模式介绍角色代码演示模板方法模式总结优点缺点适用场景源码分析模板方法模式的典型应用Servlet 中的模板方法模式Spring中的IOC容器启动---refresh()方法参考文章模板方法模式在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码的可扩展性和可维护性,模板方法模式在这种场景下就派上了用场。譬如制作一节网课的步骤可以简化为4个步骤:制作PPT录制视频编写笔记提供课程资料其原创 2021-09-05 16:06:34 · 278 阅读 · 0 评论 -
设计模式---工厂模式
工厂模式一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-31 10:20:56 · 1063 阅读 · 63 评论 -
设计模式---观察者模式
观察者模式引言介绍角色原理类图微信订阅号的案例总结优点缺点适用场景观察者模式的典型应用JDK 提供的观察者接口Guava EventBus 中的观察者模式Spring ApplicationContext 事件机制中的观察者模式参考文章引言观察者模式是设计模式中的 “超级模式”,其应用随处可见,我们以微信公众号为例。微信公众号有服务号、订阅号和企业号之分。当我们在公众号上发布一篇博文推送时,订阅的用户都能够在我发布推送之后及时接收到推送,即可方便地在手机端进行阅读。介绍观察者模式(Obser原创 2021-09-09 14:23:01 · 152 阅读 · 0 评论 -
设计模式---访问者模式
访问者模式介绍定义及使用场景UML类图角色财务案例个人心得体会静态分派以及动态分派静态分派动态分派访问者模式中的伪动态双分派对访问者模式的一些思考总结优点缺点适用性参考文章介绍 访问者模式,是行为型设计模式之一 访问者模式是一种将数据操作与数据结构分离的设计模式 访问者模式的基本思想: 软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问 访问者是一个接口,它拥有一个 visit 方法,这个方法对访问到的对象结构中不同类型原创 2021-09-07 22:01:46 · 174 阅读 · 0 评论 -
设计模式---迭代器模式
迭代器模式一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-09-08 20:26:45 · 457 阅读 · 0 评论 -
设计模式---单例模式
单例模式单例模式的介绍单例模式实现的八种方式饿汉式静态常量静态常量的优缺点静态代码块静态代码块的优缺点懒汉式线程不安全的写法优缺点线程安全,同步锁---效率低,不推荐优缺点线程安全,同步代码块---无法解决线程安全问题,不推荐优缺点双重检查---解决线程安全和懒加载问题--推荐使用优缺点静态内部类---可以实现懒加载,线程安全,推荐使用优缺点枚举优缺点单例模式注意事项单例模式的介绍单例模式实现的八种方式饿汉式静态常量步骤:1.构造器私有化(防止new)2.类的内部创建对象3.向外暴原创 2021-08-30 18:09:56 · 608 阅读 · 35 评论 -
设计模式---装饰者模式
装饰者模式介绍角色示例代码星巴克咖啡的例子方案一方案二 :将调料内置到Drink类中方案三:装饰者模式代码演示装饰者模式的简化透明性的要求半透明的装饰模式装饰模式的优点装饰模式的缺点装饰模式注意事项适用场景设计模式在JAVA I/O库中的应用透明和半透明的装饰模式的区别参考文章介绍装饰者模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。在装饰者模式中,为了让系统具有更好的灵活性和可扩展性,我原创 2021-09-03 12:51:31 · 1357 阅读 · 71 评论 -
设计模式----建造者模式
建造者模式介绍角色代码演示通过反射创建建造者对象优点缺点适用场景总结参考文章介绍建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。建造者模式一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。角色 Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是b原创 2021-08-31 15:48:22 · 166 阅读 · 0 评论 -
设计模式----命令模式
命令模式命令模式的介绍角色订单案例命令模式的优点适用场景示例代码应用宏命令----执行一组命令示例代码总结JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法命令模式的介绍命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知原创 2021-09-06 15:25:49 · 140 阅读 · 0 评论 -
设计模式---组合模式
组合模式引言组合模式介绍角色模式结构示例代码水果盘文件浏览更复杂的组合模式透明与安全透明组合模式安全组合模式组合模式总结优点缺点适用场景应用XML文档解析文件HashMapMybatis SqlNode中的组合模式参考文章引言树形结构不论在生活中或者是开发中都是一种非常常见的结构,一个容器对象(如文件夹)下可以存放多种不同的叶子对象或者容器对象,容器对象与叶子对象之间属性差别可能非常大。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况原创 2021-09-03 14:53:45 · 566 阅读 · 0 评论 -
设计模式---适配器模式
适配器模式适配器概念介绍介绍角色工作原理3种适配器模式类适配器模式演示对象适配器模式对象适配器的优点接口适配器模式综合小案例---使用类适配器模式power--带转换的电压adapter--适配器FindAdapter--寻找合适的适配器测试适配器模式总结主要优点主要缺点适用场景spring MVC中的适配器模式springMVC处理请求流程请求处理方法中适配器模式部分源码探究总结参考文章适配器概念介绍1、不同国家的插座是有区别的,如果我们去国外旅游,需要带上国外的插头转换器,来能兼容国外的插座;2原创 2021-09-01 16:43:26 · 4916 阅读 · 92 评论 -
设计模式---外观模式
外观模式模式动机模式定义模式结构角色模式分析典型的外观角色代码外观模式实例与解析实例一:电源总开关实例二:文件加密模式优缺点优点缺点模式适用环境源码分析外观模式的典型应用(1) 外观模式应用于JDBC数据库操作(2) Session外观模式是外观模式在Java EE框架中的应用模式扩展一个系统有多个外观类不要试图通过外观类为子系统增加新行为外观模式与迪米特法则抽象外观类的引入参考文章模式动机引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦原创 2021-09-03 20:25:13 · 491 阅读 · 0 评论 -
设计模式---原型模式
原型模式介绍角色Java语言提供的clone()方法代码演示---克隆羊结论深浅拷贝深浅拷贝探讨实现深克隆的方式一 : 手动对引用对象进行克隆实现深克隆的方式一 :序列化原型模式对单例模式的破坏优缺点适用场景总结介绍原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。原型模式是一种“原创 2021-08-31 14:18:54 · 155 阅读 · 0 评论 -
设计模式----代理模式
代理模式代理模式示例代码静态代理静态代理简单实现动态代理动态代理的介绍原理代码模拟动态代理流程动态代理jdk源码流程分析相关的类和接口代理机制及其特点InvocationHandler接口和Proxy类详解JDK动态代理总结Cglib代理介绍maven项目中导入相关依赖代码演示方法过滤器(CallbackFilter)实现原理JDK和CGLIB动态代理总结参考文章代理模式代理模式,为其他对象提供了一种代理以控制对这个对象的访问。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗原创 2021-09-05 14:22:40 · 1181 阅读 · 58 评论 -
设计模式---享元模式
享元模式一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-09-04 12:00:35 · 211 阅读 · 0 评论