自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 中介者模式

Spring框架中的ApplicationContext充当了中介者的角色,通过集中管理Bean的依赖注入、事件传播、AOP切面等功能,帮助开发者实现了高度解耦和灵活的应用架构。Hibernate的Session作为中介者,隐藏了数据库访问的细节,使得应用程序能够专注于业务逻辑的开发,同时提供了高度的灵活性和可维护性。简化对象: 对象可以专注于自身的功能,而不需要关注与其他对象的交互方式,从而简化了对象的实现。具体的中介者实现了这些方法,负责实际的协调和管理对象之间的交互。

2024-07-24 19:40:32 194

原创 观察者模式

它包含了一个观察者列表,可以增加或删除观察者对象。当它的状态发生变化时,会通知所有注册过的观察者。当观察的主题状态发生变化时,Observer会接收到通知并进行相应的更新操作。:主题和观察者之间是松耦合的,主题只知道观察者实现了特定的接口,不需要了解观察者的具体实现。定义了一对多的关系,当一个对象的状态发生改变,依赖于他的对象也会收到通知改变。:主题对象可以向所有注册的观察者同时发送通知,观察者收到通知后可以自行处理。:可以灵活地增加新的观察者,或者移除现有的观察者,而不需要修改主题的代码。

2024-07-23 21:45:49 113

原创 责任链模式

实现了Handler接口的基本方法,并包含一个成员变量保存后继处理者的引用。

2024-07-22 20:54:30 126

原创 享元模式

适用于需要创建大量相似对象的情况,核心思想是共享对象,以减少系统中对象的数量,从而节省内存和提高性能。

2024-07-20 14:38:26 249

原创 组合模式(透明组合模式)

在组件(5.1)中就声明了复合对象(5.2)和叶子节点(5.3)的所有方法,是比较标准的,但是对于叶子节点来说,新增或删除叶子节点的方法是没有必要的。: 表示组合中的叶子节点对象,它没有子节点。它声明了在组合中管理子组件的方法,如添加、移除和获取子组件。相对于透明组合模式,安全组合模式没有在组件中声明这些方法,而是在复合对象中声明,叶子节点可以不用实现这些方法。复合对象实现了组件接口,并且通常会存储子组件,实现组件接口中的操作方法。4.通过叶子节点和符合对象的递归组合,形成树形结构,但是对结构控制很简单。

2024-07-18 21:02:21 341

原创 外观模式(门面模式)

提供一个统一的接口,隐藏系统的复杂性。将一个比较复杂的类的内部操作隐藏起来,提取一个简单易懂的接口供用户使用。jdbc我们只需要填一些固定参数,不用去知道他具体怎么运行的,在我看来,很多框架的底层都有外观模式的影子,我们只需要知道他是做什么的,不用去研究源码怎么运行。

2024-07-16 22:21:30 142 1

原创 装饰器模式

装饰器模式通过递归组合来实现对对象行为的动态增加,同时保持接口的一致性,使得客户端可以透明地使用装饰后的对象。BufferedWriter使用装饰者模式对writer进行了增强,添加了缓冲区,提供了写数据的效率。2.具体构建角色:StubkCoffee,LuckingCoffee。装饰器是用来动态增加对象的功能,通过递归实现。代理模式是控制对象的访问,通过生成代理对象。4.具体装饰器角色:测试类 进行具体的组装。3.装饰器角色:Milk,Sugar。1.抽象构建角色:coffee接口。

2024-07-15 22:09:39 207

原创 代理模式(静态,jdk动态代理,cglib动态代理)

每个都需要手动生成一个代理类,繁琐,耦合度高(动态代理优化)在不改动原有代码的情况下,进行逻辑的增加。

2024-07-05 16:20:45 118

原创 桥接模式Bridge

将抽象部分与实现部分分离,使它们可以独立变化。例子:小米有线耳机,首先有线耳机继承于耳机,其次小米有线耳机继承于有线耳机。当我们需要新增一个无线耳机或者品牌,就需要重新写一套继承关系。桥接模式:将品牌和耳机单独提出来,只需后期组合就ok。

2024-07-05 14:26:36 276

原创 适配器模式

1.用于将一个类的接口转换成客户端期望的另一个接口。它主要用于解决接口不兼容的问题。2.允许不兼容接口的类能够一起工作,充当一个转换器。3.springmvc中的处理器适配器就是典型例子。

2024-07-04 15:29:44 472

原创 原型模式(克隆)

如果某个对象的构造函数或者初始化过程比较复杂,而且需要创建多个相似对象,使用原型模式可以简化对象的创建过程,通过复制现有对象来避免复杂的初始化逻辑。当需要创建一个对象,这个对象的数据需要保护不被外部修改,同时又需要在某些时候复制该对象并进行修改时,原型模式可以帮助实现这种保护性拷贝。当系统需要动态地配置对象,根据用户或者环境的不同配置创建不同的对象时,原型模式可以作为一种简洁的创建对象方式。当类之间的区别仅在于其初始化数据时,可以使用原型模式避免创建多个相似的子类。深拷贝:全新的对象。

2024-07-03 14:59:13 480

原创 建造者模式

负责使用 Builder 接口的对象来构建对象。Director 决定构建的步骤顺序,以及在何时使用 Builder 来构建对象。: 实现 Builder 接口,实现各个构建步骤的具体逻辑,并且能够返回构建好的对象。: 要创建的复杂对象。Builder 构建对象的各个部分,最终返回一个完整的产品。提供创建对象的最佳方式,工厂类似于创造出零件,建造者负责把零件拼装起来。: 定义创建对象各部分的接口。通常包括构建对象的各个步骤的方法。适用于:有复杂的对象属性,但是对象的属性具有共同性。

2024-07-02 14:11:10 324

原创 IO流(完善中)

I:input(输入)O:output(输出)流:streamIO流是存储和读取数据的解决方案。程序控制流。

2024-07-02 09:29:11 120

原创 抽象工厂模式

在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如NIKE工厂生产的nike鞋、nike衣服,nike鞋位于鞋产品等级结构中,衣服位于衣服产品等级结构中。:产品等级结构即产品的继承结构,如一个抽象类是鞋子,其子类有阿迪达斯鞋子,nike鞋子,则抽象鞋与具体品牌的鞋之间构成了一个产品等级结构,抽象鞋是父类,而具体品牌的鞋是其子类。解释:简单工厂模式,只能有一个产品,例如nike简单工厂只能生成衣物,但是实际情况还可以生产鞋,衣服。管理工厂的工厂,抽象工厂是一个约束。

2024-07-01 14:31:10 232

原创 简单工厂模式和工厂方法模式

简单工厂:将所有对象的创建放在一个类中,只需要调用的时候传入标识,但是如果新加参数,需要修改工厂代码。但在实际应用上:结构复杂度,代码复杂度,编程复杂度,管理复杂度都是简单工厂胜出。工厂方法:每个对象都会有一个对应的工厂,使用的时候只需要调用对应的工厂即可。在开闭原则上,简单工厂需要修改工厂代码,不符合原则。工厂方法符合开闭原则。将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。实例化对象不使用new,用工厂方法代替。在原有的基础上,为每个品牌增加品牌工厂。

2024-06-30 15:46:43 381

原创 单例模式(饿汉,懒汉)

当我们使用反射破坏的时候会显示,为什么不是Cannot reflectively create enum objects。反编译我们的class文件:发现空参构造函数是存在的。那证明这个文件肯定是反编译出了问题。下载jad反编译软件,随后反编译,在对应的文件找反编译后的java文件。将对应空参改为传入String和int。

2024-06-29 12:07:46 353

原创 MySql环境安装

将安装包解压到自己的sql文件夹中,记住这个文件夹,后续在my.ini和环境配置中会用到这个路径。# 设置mysql的安装目录 ----------是你的文件路径 需要修改为自己的-------------# 设置mysql数据库的数据的存放目录 ---------将前面的修改为自己的 data后续会自动创建。解压sql文件之后,新建一个my.ini文件,将下面的配置复制进去,需要修改两个参数。# 设置mysql客户端连接服务端时默认使用的端口。# 创建新表时将使用的默认存储引擎。

2024-04-22 15:22:05 1039

原创 int和Integer

4.在一些需要对代码进行控制,还需要性能较好,可以使用int进行控制(例如代码中有个地方访问需要权限,使用其他类型比较很慢,这时候可以用int的0和1做控制,就会有较好的性能优化);Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。涉及到自动装箱,在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象;int是对象,没有相关的方法或功能。

2024-04-19 16:19:03 1041

原创 Sting

String是一个不可变的字符串,底层是用finally修饰的字符数组(finally修饰的变量不可变,一般称之为常量),他不是一个基本数据类型,它属于对象。

2024-04-18 16:52:46 1398

原创 Java环境安装

执行 jdk-8u131-windows-x64.exe 类似于这种的。依次点击安装到完成。自己装的话,需要在甲骨文官网下载一下jdk包,根据自己的需求去下载版本。新增一个变量名为JAVA_HOME 值为自己JDK包所在路径。输入cmd 点击回车 输入java -version。公司的话,可以找经理要一下jdk包。放在 D盘任意路径下,解压即可。

2024-04-17 17:04:58 291

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除