![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
文章平均质量分 92
大迂居士
不忘初心
展开
-
Java设计模式 --- 自定义SpringIOC实战
用于封装bean的属性,体现到上面的配置文件就是封装bean标签的子标签property标签数据。/*** @Description: 用来封装bean标签下的property标签的属性* name属性* ref属性* value属性 : 给基本数据类型及String类型数据赋的值return ref;} }BeanDefinitionRegistry接口定义了注册表的相关操作,定义如下功能:注册BeanDefinition对象到注册表中。原创 2023-05-17 21:56:42 · 74 阅读 · 0 评论 -
Java设计模式行为型模式(22)--- 解释器模式
*** @Description: 抽象表达式类。原创 2023-05-17 21:55:46 · 44 阅读 · 0 评论 -
Java设计模式行为型模式(21)--- 备忘录模式
又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。原创 2023-05-17 21:53:49 · 212 阅读 · 0 评论 -
Java设计模式行为型模式(20)--- 访问者模式
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。原创 2023-05-17 21:52:24 · 79 阅读 · 0 评论 -
Java设计模式行为型模式(19)--- 迭代器模式
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。原创 2023-04-21 22:49:32 · 34 阅读 · 0 评论 -
Java设计模式行为型模式(18)--- 中介者模式
又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。原创 2023-04-21 22:48:03 · 125 阅读 · 0 评论 -
Java设计模式行为型模式(17)--- 观察者模式
又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。原创 2023-04-21 22:47:36 · 80 阅读 · 0 评论 -
Java设计模式行为型模式(16)--- 状态模式
【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。原创 2023-04-15 08:02:42 · 119 阅读 · 0 评论 -
Java设计模式行为型模式(15)--- 责任链模式
在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活中的“击鼓传花”游戏等。又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;原创 2023-04-15 08:01:07 · 53 阅读 · 0 评论 -
Java设计模式行为型模式(14)--- 命令模式
日常生活中,我们出去吃饭都会遇到下面的场景。将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。原创 2023-04-15 07:59:22 · 99 阅读 · 0 评论 -
Java设计模式行为型模式(13)--- 策略模式
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。原创 2023-04-09 19:56:48 · 123 阅读 · 0 评论 -
Java设计模式行为型模式(12)--- 模板方法模式
在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。原创 2023-04-09 19:53:21 · 53 阅读 · 0 评论 -
Java设计模式结构型模式(11)--- 享元模式
*** @Description: 抽象享元角色//获取图形的方法 public abstract String getShape();//显示图形及颜色 public void display(String color) {System . out . println("方块形状:" + getShape() + ", 颜色:" + color);} }原创 2023-04-09 19:52:36 · 238 阅读 · 0 评论 -
Java设计模式结构型模式(10)--- 结构型模式
又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。原创 2023-03-30 23:17:22 · 113 阅读 · 0 评论 -
Java设计模式结构型模式(9)--- 外观模式
又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观(Facade)模式是“迪米特法则”的典型应用。原创 2023-03-29 19:41:43 · 219 阅读 · 0 评论 -
Java设计模式结构型模式(8)--- 桥接模式
现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。原创 2023-03-27 19:48:38 · 48 阅读 · 0 评论 -
Java设计模式结构型模式(7)--- 装饰者模式
我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。原创 2023-03-27 19:45:49 · 36 阅读 · 0 评论 -
Java设计模式结构型模式(6)--- 适配器模式
如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类适配器模式和对象适配器模式。原创 2023-03-25 11:14:17 · 118 阅读 · 0 评论 -
Java设计模式结构型模式(5)--- 代理模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。原创 2023-03-25 11:14:13 · 71 阅读 · 0 评论 -
Java设计模式创建者模式(4)--- 建造者模式
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。原创 2023-03-25 10:54:46 · 109 阅读 · 0 评论 -
Java设计模式创建者模式(3)--- 原型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。原创 2023-03-25 10:46:14 · 86 阅读 · 0 评论 -
Java设计模式创建者模式(2)--- 工厂方法模式
在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;解耦。介绍三种工厂的使用简单工厂模式(不属于GOF的23种经典设计模式)工厂方法模式抽象工厂模式。原创 2023-03-25 09:57:06 · 198 阅读 · 0 评论 -
Java设计模式创建者模式(1)--- 单例设计模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。原创 2023-03-25 09:56:18 · 99 阅读 · 0 评论 -
Java设计模式 --- 基础概念
"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任 克里斯托夫·亚历山大(Christopher Alexander) 在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。原创 2023-03-25 09:53:11 · 86 阅读 · 0 评论