
java设计模式
文章平均质量分 72
专门介绍java的23种设计模式
波波烤鸭
10余年架构和线上讲师工作经验。精通Java,微服务和云原生相关,致力于Java技术的免费分享。
展开
-
Java观察者模式(Observer)
观察者模式java GOF23种设计模式中的一种。在最近介绍的Redis和ActiveMQ中都涉及到了观察者模式,所以我们在本文详细介绍下此模式:观察者模式 观察者模式又称为发布/订阅(Publish/Subscribe)模式,在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新.使用场景广播机制场景1.聊天室程序的创建。服务器创建好后,...原创 2019-02-16 23:57:11 · 16840 阅读 · 1 评论 -
【设计模式面试】结构性设计模式你清楚几个?
【金三银四】设计模式篇1.谈谈你对设计模式的理解1.首先谈设计模式的作用:经验的传承,提高了软件复用的水平,最终达到提高软件开发效率设计原则简单说明单一职责一个类只负责一项职责里氏替换原则子类可以扩展父类的功能,但不能改变父类原有的功能依赖倒置原则要依赖于抽象,不要依赖于具体,核心思想是面向接口编程接口隔离原则建立单一接口,不要建立庞大臃肿的接口,<br>尽量细化接口,接口中的方法尽量少迪米特法则 (最少知道原则)一个对象.原创 2022-04-30 10:55:52 · 1197 阅读 · 0 评论 -
Java设计模式总结
什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。通过对这些设计模式的合理使用能够是我们的系统更加的健壮。六大设计原则设计原则简单说明单一职责一个类只负责一项职责里氏替换原则子类可以扩展父类的功能,但不能改变父类原有的功能依赖倒置原则要依赖于抽象,不要依赖于具体,核心思想是面向接...原创 2019-04-18 23:52:06 · 5039 阅读 · 0 评论 -
Java访问者模式(Visitor)
访问者模式模式动机: 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。定义: 表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变个元素的类的前提下定义作用于这些元素的新操作。开发中的场景(应用范围非常窄,了解即可)XML文档解析器设计编译器的设计复...原创 2019-04-17 23:57:15 · 208676 阅读 · 0 评论 -
Java解释器模式(Interpreter)
解释器模式介绍是一种不常用的设计模式用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。当我们需要开发一种新的语言时,可以考虑使用解释器模式。尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用Jruby,Groovy、java的js引擎来替代解释器的作用,弥补java语言的不足。常用场景EL表达式式的处理正则表达式解释器S...原创 2019-04-17 23:55:08 · 3567 阅读 · 0 评论 -
Java备忘录模式(Memento)
本文我们来介绍下java23种设计模式中的备忘录模式。备忘录模式Memento使用场景录入大批人员资料。正在录入当前人资料时,发现上一个人录错了,此时需要恢复上一个人的资料,再进行修改。Word文档编辑时,忽然电脑死机或断电,再打开时,可以看到word提示你恢复到以前的文档管理系统中,公文撤回功能。公文发送出去后,想撤回来核心内容 就是保存某个对象内部状态的拷贝,这样以...原创 2019-04-17 23:44:02 · 208125 阅读 · 0 评论 -
Java状态模式(State)
现实生活中我们经常会碰到状态改变的场景,面对不同的场景我们会做出不同的处理。比如:电梯的运行• 维修、正常、自动关门、自动开门、向上运行、向下运行、消防状态红绿灯• 红灯、黄灯、绿灯企业或政府系统• 公文的审批状态– 报销单据审批状态– 假条审批网上购物时,订单的状态• 下单• 已付款• 已发货• 送货中• 已收货状态模式使用场景 本案例我们通过宾馆入住的...原创 2019-04-17 00:18:17 · 15095 阅读 · 8 评论 -
Java命令模式(Command)
概述 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作,将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。命令模式(Command)的参与者序号参与者说明1Command声明执行操作的接口2ConcreteCommand将一个接收者对象绑定于一个动作, 调用接收者相应的操作,以实现Exe...原创 2019-04-08 23:21:52 · 2253 阅读 · 0 评论 -
Java中介者模式(Mediator)
中介者模式(Mediator)场景(中介大家熟悉吗?房产中介?):假如没有总经理。下面三个部门:财务部、市场部、研发部。财务部要发工资,让大家核对公司需要跟市场部和研发部都通气;市场部要接个新项目,需要研发部处理技术、需要财务部出资金。市场部跟各个部门打交道。 虽然只有三个部门,但是关系非常乱。实际上,公司都有总经理。各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门。...原创 2019-04-07 23:53:01 · 1778 阅读 · 0 评论 -
Java迭代器模式(iterator)
迭代器模式概念介绍 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。又称为:游标cursor模式特点说明聚合对象存储数据迭代器遍历数据案例实现1.自定义的迭代器接口/** * 自定义的迭代器接口 * @author 波波烤鸭 * */public interface MyIter...原创 2019-04-07 23:12:11 · 2006 阅读 · 0 评论 -
Java责任链模式(Chain of responsibility)
在处理流程相关的业务的时候我们会经常碰到责任链模式的使用,所以对于这种设计模式我们还是应该有所了解的,所以本文就来记录下。责任链模式定义 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象处理。场景:公司里面,报销个单据需要经过流程:• 申请人填单申请,申请给经理• 小于1000...原创 2019-04-07 22:57:55 · 2902 阅读 · 8 评论 -
Java享元模式(FlyWeight)
享元模式 内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存.核心:享元模式以共享的方式高效地支持大量细粒度对象的重用。享元对象能做到共享的关键是区分了内部状态和外部状态。• 内部状态:可以共享,不会随环境变化而改变• 外部状态:不可以共享,会随环境变化而改变案例围棋软件设计每个围棋棋子都是一个对象,有如下属性:享元模...原创 2019-03-15 23:52:45 · 2384 阅读 · 1 评论 -
Java外观模式(门面模式Facade)
外观模式 外观模式也叫门面模式,是开发过程中使用频率非常高的一种设计模式,但非常容易理解。概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。代码案例 模拟办理公司的流程具体实现/** * 银行 * @aut...原创 2019-03-15 11:45:07 · 2141 阅读 · 0 评论 -
Java组合模式(Composite)
组合模式(Composite)使用组合模式的场景: 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象.组合模式核心:抽象构件(Component)角色: 定义了叶子和容器构件的共同点叶子(Leaf)构件角色:无子节点容器(Composite)构件角色: 有容器特征,可以包含子节点结构类图组合模式工作流程分析:组合模式为处理树形结构...原创 2019-03-15 10:12:14 · 1998 阅读 · 0 评论 -
Spring之AOP适配器模式
Spring架构中涉及了很多设计模式,本文来介绍下Spring中在AOP实现时Adapter模式的使用。AOP本质上是Java动态代理模式的实现和适配器模式的使用,关于这两种设计模式的具体介绍烦请参考我之前的文章Java代理模式Java适配器模式(adapter)文章目录Spring中适配器模式一、AOP案例1.相关依赖2.创建目标对象3.创建通知4.配置文件5.测试二、适配器应用解...原创 2019-03-06 16:54:52 · 8714 阅读 · 5 评论 -
Java策略模式(Strategy)
文章目录策略模式(Strategy)一.不使用策略模式二.使用策略模式1.案例类图2.案例实现3.总结4.开发中的使用场景策略模式(Strategy)一.不使用策略模式使用场景:某个市场人员接到单后的报价策略(CRM系统中常见问题)。报价策略很复杂,可以简单作如下分类:普通客户小批量报价普通客户大批量报价老客户小批量报价老客户大批量报价具体选用哪个报价策略,这需要根据实际情况...原创 2019-03-06 10:40:50 · 2811 阅读 · 0 评论 -
Java装饰者模式(decorator)
文章目录装饰者模式(decorator)1.实现细节2.案例演示3.IO流实现细节4.实际使用场景5.总结装饰者模式(decorator) 装饰者模式又称为包装模式(Wrapper),作用是用来动态的为一个对象增加新的功能。装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。1.实现细节...原创 2019-03-06 00:05:49 · 2746 阅读 · 0 评论 -
Java模板模式(template)
java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式模板模式模板模式介绍 模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。 换个说法就是某个流程的代码已经都具备了,但是其中某个节点的代码暂时不能确定,...原创 2019-03-05 23:20:17 · 25346 阅读 · 0 评论 -
Spring之事件监听(观察者模型)
本文介绍下Spring中的事件监听,其本质也就是观察者模型(发布/订阅模式),具体的观察者模式参考下文Java观察者模式(Observer)文章目录Spring事件监听一、事件监听案例1.事件类2.事件监听类3.事件发布者4.配置文件中注册5.测试二、Spring中事件监听分析1. Spring中事件监听的结构2. 核心角色介绍2.1 ApplicationEvent2.2 Appli...原创 2019-03-06 13:57:26 · 3935 阅读 · 0 评论 -
【面试高频】聊聊Spring中用到的设计模式
谈谈你对Spring中使用到的设计模式的理解原创 2019-03-06 17:25:53 · 5013 阅读 · 1 评论 -
Java桥接模式(bridge)
本文介绍下Java设计模式中的桥接模式桥接模式多层继承结构 在现实生活中比如商城中以电脑为例来说,如何处理电脑销售分类的问题,我们可以使用多层继承结构实现这种场景问题1.扩展性问题1&gt;. 如果要增加一个新的扩展类型:智能手机,则要在每个品牌下增加一个新类2&gt;. 如果要新增加一个品牌,则这个品牌下要增加各个类型的电脑2.违反单一职责原则一个类有两个引起该类变化的...原创 2019-02-26 22:00:09 · 3317 阅读 · 0 评论 -
Java适配器模式(adapter)
本文介绍下java设计模式中的适配器模式适配器模式什么是适配器模式 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或适配者类。适配器(Adapter):通过包...原创 2019-02-26 21:28:44 · 5292 阅读 · 0 评论 -
java建造者模式
在现实生活中如果我们需要制造一个比较复杂的东西,比如手机,台式电脑,或者汽车等。如果我们要制造一台电脑的话我们会先将电脑所需的各个部件买回来然后在组装起来成为一台电脑。这里电脑所需的各个组件比如显示器,CPU,硬盘等等都是由不同的厂商生产的,然后被我们不同的组合而成了不同的产品。这是现实生活中和建造者模式类似的场景,而在程序中也一样有些情况下我们需要创建比较复杂的对象,在这种场景下我们可以通过...原创 2019-02-24 22:43:10 · 2885 阅读 · 0 评论 -
Java工厂模式
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,工厂模式在Java程序中可以说是随处可见。本文来给大家详细介绍下工厂模式面向对象设计的基本原则:OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对...原创 2019-02-23 21:19:04 · 13694 阅读 · 0 评论 -
Java单例模式
单例模式应该是我们接触的众多设计模式中的第一个,但是对于单例模式的一些细节地方对于初学者来说并不是很清楚,所以本文就来整理下单例模式。单例模式 单例模式的核心是保证一个类只有一个实例,并且提供一个访问实例的全局访问点。单例的使用场景Spring中bean对象的模式实现方式servlet中每个servlet的实例spring mvc和struts1框架中,控制器对象是单例模式应...原创 2019-02-19 23:44:56 · 5803 阅读 · 2 评论 -
Java原型模式(prototype)
&amp;emps;prototype模式也就是原型模式,是javaGOF23种设计模式中的一种,我们在学习spring的时候在bean标签的学习中碰到过,所以本文来给大家介绍下原型模式原型模式 &amp;emps;在java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式。 &amp;emp...原创 2019-02-18 19:33:49 · 6803 阅读 · 3 评论 -
Java代理模式
代理模式23中(Gof)中代理模式中的一种,AOP本身就是基于动态代理实现的,所以掌握了代理模式对AOP的学习很有帮助,所以先讲下代理模式1.静态代理模式若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下, 静态代理中的代理类和目标类会实现同一接口或是派生自相同的父类。1.1 创建接口/*** 定义公共...原创 2019-01-14 22:10:07 · 5741 阅读 · 1 评论