![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 71
霓乤
努力的码农
展开
-
设计模式--适配器模式
适配器模式引例简介基本介绍工作原理示例代码引例简介基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。工作原理适配器模式:将一个类的接口转换成另一种接口.让 原本接口不兼容的类可以兼容。从用户的角度看不到被适配者,是解耦的。用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。用户收到反馈结果,感觉只是和目标接口交互。示例在实际业务原创 2021-10-18 21:52:01 · 162 阅读 · 0 评论 -
设计模式--建造者模式
建造者模式引例建造者模式介绍结构建造者模式改进引例总结引例建造者模式介绍结构建造者模式改进引例总结原创 2021-09-27 12:37:29 · 159 阅读 · 0 评论 -
设计模式--原型模式
原型模式1.概述2.介绍3.引例4.原始的设计5. 用原型模式改善5.1 示例:利用clone进行复制5.2 问题5.3 浅拷贝和深拷贝5.4 使用clone实现深拷贝(每个用到的类需要实现clone)5.5 通过对象序列化实现深拷贝6.总结1.概述原型模式主要解决的是创建重复对象的问题。而这部分对象内容本身比较复杂,因此获取相关对象数据耗时较长,所以采用复制的方式节省时间。2.介绍原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽原创 2021-09-24 21:37:42 · 155 阅读 · 0 评论 -
设计模式--工厂模式(三种)
工厂模式概述简单工厂1.基本结构2.示例3.优缺点4.简单工厂+配置文件解除耦合工厂方法模式1.概念2.基本结构3.示例4.优缺点抽象工厂模式1.概念2.基本结构3.示例4.优缺点概述简单工厂1.基本结构2.示例3.优缺点4.简单工厂+配置文件解除耦合工厂方法模式1.概念2.基本结构3.示例4.优缺点抽象工厂模式1.概念2.基本结构3.示例4.优缺点...原创 2021-09-07 15:15:27 · 145 阅读 · 0 评论 -
设计模式--单例模式
单例模式1.简介2.分类:使用1.饿汉式(( 静态常量)2.饿汉式(静态代码块 )3.懒汉式(线程不安全)4. 懒汉式(线程安全,同步方法)5. 懒汉式(线程安全,同步代码块)6.双重检查7. 静态内部类8. 枚举1.简介所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。单例模式主要解决的是一个全局使用的类,被频繁的创建于销毁,从而提升代码总体的性能。比如:在实际中,数据库连接池不会反复创建,sprin原创 2021-09-04 22:15:07 · 65 阅读 · 0 评论 -
java设计模式-六大基本设计原则
六大基本设计原则设计模式的目的设计模式六大原则设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让 序 程序( 软件) ,具有更好:代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现 高内聚, 低耦 合的特性设计模式六大原则原创 2021-08-17 20:06:07 · 93 阅读 · 0 评论 -
六大设计原则--迪米特法则 (lod)
迪米特法则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述一个对象应该对其他对象保持最少的了解。类与类关系越密切,耦合度越大。迪米特法则(Demeter Principle)又叫 最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息迪米特法则还有个更简单的定义:只与直接的朋友通信。直 接的朋友:每个对象都会与其他对象有耦合关系,只要两个原创 2021-08-17 19:52:58 · 218 阅读 · 0 评论 -
六大设计原则--开闭原则 (ocp)
开闭原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善1.概述开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量 通过扩展软件实体的行为来实现变化,而 不是通过修改已有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则2.案例2.1.描述2.2.代码//绘制图形class原创 2021-08-17 19:46:02 · 129 阅读 · 0 评论 -
六大设计原则--里氏替换原则(lsp)
里氏替换原则OO 中的继承性的思考和说明1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善OO 中的继承性的思考和说明继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实 现的方法任意修改,就会对整个继承体系造成破坏。继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵 入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承, 则当这个类需要修改时,必须考虑原创 2021-08-17 19:38:16 · 150 阅读 · 0 评论 -
六大设计原则--依赖倒置原则(dip)
依赖倒置原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类。使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他原创 2021-08-17 19:26:37 · 98 阅读 · 0 评论 -
六大设计原则--接口隔离原则(isp)
接口隔离原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。2.案例2.1.描述类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D。2.2.代码nterface Interface1 { void operation1(); void operation2(); void operation3(); void operation原创 2021-08-17 19:18:02 · 72 阅读 · 0 评论 -
六大设计原则--单一职责原则(srp)
单一职责1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节1.概述所谓的职责就是类变化的原因,也就就实际的业务需求。如果一个类有多于一个原因别改变,那么这个类的职责就有超过两个及以上的规则。而单一职责约定一个类有且仅有一个改变类的原因。在实际开发中,例如在service层,userService就只负责对用户进行操作,商品就交给goodsService处理。2.案例2.1.描述视频网站用户分类2.2.代码public class VideoService原创 2021-08-17 17:09:11 · 116 阅读 · 0 评论 -
mybatis源码---Executor执行器
java原生jdbc操作流程读取配置信息(基本信息)加载驱动获取连接获取PreparedStatement的实例 (或:预编译sql语句)针对结果集的处理(增删改用 execute() 不需处理结果集,查询用 .executeQuery(); )关闭连接流程图示例//获取连接Connection conn = JDBCUtils.getConnection(); String sql = "insert intocustomers(name,email,birth,photo)原创 2021-08-10 17:14:18 · 114 阅读 · 0 评论 -
java--动态代理
动态代理代理代理概念代理作用:代理分类:静态代理概念实现逻辑:示例定义一个卖优盘接口(规范行为)厂家类(实现这个行为)商家代理厂家(同样实现卖优盘这个行为)顾客购买优盘静态代理的缺点动态代理(jdk)概念优点AOP动态代理所涉及的类proxy类InvocationHandler接口Method 类动态代理示例使用过程:定义卖优盘行为的接口厂家定义代理中用到的InvocationHandler实现类测试缺点cglib代理概念代理代理概念在开发中存在a类需要调用c类的方法,完成某一个功能,但是c禁止a原创 2021-08-09 17:25:44 · 365 阅读 · 0 评论 -
约瑟夫环问题(单向循环链表实现)
约瑟夫环问题问题描述单向循环链表介绍构造链表解决约瑟夫问题测试代码问题描述1.Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。2.提示:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开始计数,计到 m 时原创 2021-05-31 18:34:28 · 1011 阅读 · 0 评论 -
数据结构-双向链表
介绍定义图解单链表的缺点:遍历添加 (默认添加到双向链表的最后)修改删除指定位置插入Node类DoubleLinkedList类测试类结果定义1.定义:双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。图解2.图解·:与单列表的比较定义图解单链表的缺点:遍历添加 (默认添加到双向链表的最后)修改删除指定位置插入Node类DoubleLinkedList类测试类结果单链表的缺点:单向链表,查找的方向只能是一个方向,原创 2021-05-30 18:03:58 · 75 阅读 · 0 评论 -
数据结构-稀疏数组转换
1.稀疏数组 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组,当一个数组中大部分元素为0(相同数字,可以是0,1,...), 或者为同一个值的数组时,可以使用稀疏数组来保存该数组。1 1 1 1 1 1 1 5 1 1 1 1 15 1 1 1 1 1 ------------------------------> ...原创 2021-04-07 23:57:15 · 153 阅读 · 1 评论 -
数据结构-队列(数组实现)
1.本文利用数组进行简单地队列实现操作思想很简单:front指向第一个元素的前一个位置,初始化front=-1rear指向队尾元素,初始化rear=-1rear控制入队,front控制出队,算法很简单,直接看代码2.缺点;在入队,出队操作中,前面的空间造成了浪费,不能充分利用数组空间。3.改进算法:(环形队列)参考:https://blog.csdn.net/m0_46633875/article/details/115497667?spm=1001.2014.3001.5502原创 2021-04-07 23:38:55 · 87 阅读 · 1 评论 -
数据结构-环形队列(数组实现)
问题探讨:单向数组实现环形队列的缺点:不能充分利用数组空间针对单向数组的改进:环形队列的思想:1.front含义改变:front指向队列的第一个元素,初始化front=02.rear含义改变:指向队列最后一个元素的后一个位置,空出一个空间作为约定,初始化rear=0;(rear前一个元素为队列的最后一个元素,rear指向空位置的)3.队满条件:(rear+1)%maxsize=front(我们大可想象成一个收尾相连的环形数组(不太严谨,我的鄙见),rear+1就相当于指向了...原创 2021-04-07 23:32:11 · 342 阅读 · 0 评论 -
简单的Java swing应用——图片查看器()
该篇主要运用Java swing的基础知识,展示的应用结果。用到的内容:import swingTool.ImageView;import javax.imageio.ImageIO;(本文主要是读文件)import javax.swing.*;import javax.swing.border.Border;(对于边框的复合使用)import java.awt.*;import java.awt.event.MouseAdapter;(鼠标适配器,实现了各类鼠标事件,写起来更简...原创 2020-08-26 22:56:21 · 1657 阅读 · 1 评论 -
线性布局管理器
线性布局管理器这是我根据阿发老师的讲课内容,自己学习运用的,不足之处,多多谅解。线性布局方式,分为水平布局和竖直布局(1)、水平布局。各个子控件在水平方向上依次排列,每个控件的宽度可以单独指定, 可以使用MyXLayout例如:setLayout(newAfXLayout(5));//子控件之间的间距为5像素add(a1,"80px");-"80px"固定占80像素(不会随窗体的变化而变化)add(a2,"0%");-"20%"固定占总空间的...原创 2020-08-22 23:16:32 · 350 阅读 · 0 评论