自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ProtoBuf入门知识点总结

ProtoBuf入门知识点总结一、ProtoBuf的概述(一)、ProtoBuf是什么(二)、ProtoBuf的历史(三)、序列化二、ProtoBuf协议与其他序列化协议性能对比三、ProtoBuf协议的优缺点(一)、优点(二)、缺点四、参考文献一、ProtoBuf的概述(一)、ProtoBuf是什么protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格

2021-07-03 15:10:26 633

原创 RPC入门知识点总结

RPC入门知识点总结一、 基本概念二、RPC的通信流程(一)、RPC的通信模式(二)、RPC的通信流程三、RPC的角色四、为什么需要注册中心五、使用到的技术六、注销/注销服务;服务订阅/取消(一)、注册/注销服务(二)、服务订阅/取消七、RPC框架八、参考文献一、 基本概念RPC, 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议,该协议允许运行于一台计算机的程序程调用另一台计算机的上的程序。通俗讲,RPC通过把网络通讯抽象为远程的过程调用,调用远程的过程就像调用本

2021-07-01 20:47:48 640 2

原创 JVM入门学习笔记

JVM入门学习笔记一、Java和JVM的简介(一)、Java的概念(二)、JVM的概念(三)、JVM的部分特点二、源码到类文件(一)源码demo(二)、编译器的操作(三)、类文件(class文件)1、16进制class文件部分内容2、The `ClassFile` Structure3、简单分析(四)、反编译验证1、反编译操作结果2、反编译操作分析三、类加载机制(一)、类加载机制的概念以及方式(二)、类加载的过程之装载(三)、类加载的过程之链接1、验证2、准备3、解析(四)、初始化四、使用与卸载(一)、使用

2021-01-16 15:19:01 484 1

原创 动态规划之习题分析

动态规划之习题分析一、动态规划的概念二、爬楼梯(一)、题目需求(二)、解法(三)、代码分析三、独一的道路一(一)、题目需求(二)、解法(三)、代码分析四、独一的道路二(一)、题目需求(二)、解法(三)、代码分析五、最长公共子序列(一)、题目需求(二)、解法(三)、代码分析六、单词拆分(一)、题目需求(二)、解法(三)、代码分析七、回文分割(一)、题目需求(二)、解法(三)、代码分析一、动态规划的概念​ 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解

2021-01-11 14:48:15 266

原创 并查集之习题分析

并查集之习题分析一、并查集的概念二、并查集的数据结构以及代码分析(一)、并查集的数据结构(二)、并查集数据结构方法分析三、小岛问题(一)、题目需求(二)、解法(三)、代码分析一、并查集的概念​ 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,

2021-01-10 20:36:13 167

原创 字典树(trie)之习题分析

字典树(trie)之习题分析一、字典树(trie)的概念二、字典树(trie)的使用场景(一)、字符串检索(二)、文本预测、自动完成,see also,拼写检查(三)、词频统计(四)、排序(五)、字符串最长公共前缀(六)、字符串搜索的前缀匹配(七)、作为其他数据结构和算法的辅助结构三、如何实现trie(一)、题目需求(二)、解法(三)、代码分析四、添加与搜索单词 - 数据结构设计(一)、题目需求(二)、解法(三)、代码分析一、字典树(trie)的概念​ 字典树又称单词查找树,Trie树,是一种树形结构

2021-01-10 18:02:04 298

原创 字符串(String)之习题分析

字符串(String)之习题分析一、字符串的概念(一)、字符串的概念(二)、String的概念和特点(三)、StringBuffer的概念和特点(四)、StringBuilder的概念和特点(五)、总结二、字符串(String)的常见操作(一)、基本操作方法(二)、字符串的比较(三)、字符串与其他数据类型的转换(四)、字符串查找(五)、截取与拆分(六)、替换或修改三、逆转单词一(一)、题目需求(二)、解法(三)、代码分析四、逆转单词二(一)、题目需求(二)、解法(三)、代码分析五、罗马数字转为整数(一)、

2021-01-10 10:57:57 595

原创 深度优先搜索(DFS)之习题分析

深度优先搜索(DFS)之习题分析一、深度优先搜索(DFS)的概念二、全排列(一)、题目需求(二)、解法(三)、代码分析三、子集(一)、题目需求(二)、解法(三)、代码分析四、n皇后(一)、题目需求(二)、解法(三)、代码分析一、深度优先搜索(DFS)的概念​ 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。

2021-01-07 17:37:38 701

原创 宽度优先搜索(BFS)之习题分析

宽度优先搜索之习题分析一、宽度优先搜索的概念二、小岛问题(一)、题目需求(二)、解法(三)、代码分析三、单词梯(一)、题目需求(二)、解法(三)、代码分析一、宽度优先搜索的概念​ 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。​ 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。二、小岛问题

2021-01-06 20:43:52 932

原创 散列(Hash)之习题分析

散列(Hash)之习题分析一、什么是散列(Hash)(一)、Hash的概念(二)、处理冲突的方法二、HashMap解析(一)、HashMap的概念(二)、HashMap的属性(三)、构造方法(四)、HashMap的常用方法1、put方法(1)、1.7以前(2)、1.7以后2、get方法3、resize方法(五)、底层数据分析1、1.7以前2、1.7以后三、子数组和等于K(一)、题目需求(二)、解法(三)、习题分析四、图的克隆(一)、题目需求(二)、解法1、Node类2、解法(三)、习题分析五、最长无重复的字

2021-01-06 19:27:26 747

原创 堆(优先队列)之习题分析

堆之习题分析一、堆以及优先队列的概念(一)、堆的概念(二)、优先队列——PriorityQueue1、优先队列的概念2、优先队列的数据结构3、优先队列的源码分析(1)、属性(2)、构造方法(3)、常用方法二、数据流的中位数(一)、题目需求(二)、解法(三)、代码分析三、第K大元素(一)、题目需求(二)、解法1、快速队列2、快速队列改进版3、优先队列(三)、代码分析一、堆以及优先队列的概念(一)、堆的概念严格来讲,堆有不同的种类,但是我们在算法学习中,主要用的还是二叉堆,而二叉堆有最大堆和最小堆之分。

2021-01-06 16:57:26 476

原创 排序之几大常见算法总结

排序之几大常见算法总结一、冒泡排序算法(一)、冒泡排序算法的概念(二)、冒泡排序算法的流程图(三)、冒泡排序算法的代码示例二、插入排序算法(一)、插入排序算法的概念(二)、插入排序算法的流程图(三)、插入排序算法的代码示例三、选择排序算法(一)、选择排序算法的概念(二)、选择排序算法的流程图(三)、选择排序算法的代码示例四、归并排序算法(一)、归并排序算法的概念(二)、归并排序算法的流程图(三)、归并排序算法的代码示例五、快速排序算法(一)、快速排序算法的概念(二)、快速排序算法的流程图(三)、快速排序算法

2020-12-15 20:19:22 149

原创 树之习题分析下

树的习题分析下一、二叉树的序列化与反序列化(一)、题目需求(二)、解法1、树结点类2、序列化解法3、反序列化解法(三)、代码分析1、序列化解法分析2、反序列化解法分析二、二叉树的右视角(一)、题目需求(二)、解法(三)、代码分析三、二叉树的最近公共祖先(一)、题目需求(二)、解法(三)、代码分析四、平衡二叉树(一)、题目需求(三)、代码分析一、二叉树的序列化与反序列化(一)、题目需求序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网

2020-12-15 19:27:19 437

原创 树之习题分析上——树的遍历

树之习题分析一、树的前序遍历(一)、题目需求​ 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]​```示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内

2020-11-04 20:11:33 429

原创 双指针之习题分析

双指针之习题分析一、两数之和——有序数组(一)、题目需求(二)、解法(三)、代码分析(四)、流程图二、三数之和(一)、题目需求(二)、解法(三)、代码分析(四)、流程图三、验证三角形(一)、题目需求(二)、解法(三)、代码分析(四)、流程图四、存水问题(一)、题目需求(二)、解法(三)、代码分析(四)、流程图分析一、两数之和——有序数组(一)、题目需求​ 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。​ 函数应该返回这两个下标值 index1 和 index2,其中

2020-11-01 14:16:55 191 4

原创 二分查找之习题分析

二分查找之习题分析一、在旋转有序的数组中搜索(一)、题目需求(二)、解法(三)、代码解析二、在旋转有序的数组中寻找最小数值(一)、题目需求(二)、解法(三)、代码解析三、寻找峰值(一)、题目需求(二)、解法(三)、代码解析四、切木头(一)、题目需求(二)、解法(三)、代码解析一、在旋转有序的数组中搜索(一)、题目需求​ 给你一个升序排列的整数数组 nums ,和一个整数 target 。​ 假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变

2020-11-01 10:09:35 983

原创 优先队列的详解(包含优先队列的初级实现以及堆的实现方式)

优先队列一、优先队列的概念二、优先队列的API三、优先队列的初级实现(一)、数组实现(无序)(二)、数组实现(有序)(三)、链表表示法(四)、图表分析四、堆的定义(一)、堆的概念(二)、二叉堆表示法五、堆的算法(一)、堆实现的比较和交换方法(二)、由下至上的堆有序化(上浮)(三)、由上至下的堆有序化(下沉)(四)、堆的类定义以及相关方法一、优先队列的概念​ 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。

2020-10-27 22:38:25 1320

原创 快速排序详解(Java实现,包含代码实现以及算法解析)

快速排序一、快速排序的概念二、基本算法三、代码实现四、快速排序算法解析五、快速排序算法的基本性质一、快速排序的概念​ 快速排序实现简单适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序引人注目得特点包括它是原地排序(只需要一个很小得辅助栈),且将长度为N的数组排序所需的时间和NlgN成正比。​ 另外快速排序的内循环比大多数排序算法都要短小,这意味着它无论是在理论上还是在实际中都要更快。​ 它的主要缺点是非常脆弱,在实现时要非常小心才能避免低劣的性能。二、基本算法​

2020-10-27 09:44:09 290

原创 LRU缓存机制(包含流程图分析以及各操作的解析详解)

LRU缓存机制一、题目需求二、LRU缓存机制的概念三、LRU缓存机制的代码示例四、LRU缓存机制的分析(一)、内部类CacheNode(二)、内部变量(三)、get()操作(四)、put()操作(五)、移动操作五、流程图一、题目需求运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 pu

2020-10-26 22:30:40 3459

原创 两数相加的题型解法(包含流程图分析以及测试用例)

两数相加一、题目需求二、解法三、测试用例四、流程图一、题目需求给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807二

2020-10-26 20:03:22 2755

原创 归并排序算法(Java实现包含自顶向下的归并排序算法以及自底向上的归并排序算法)

归并排序算法一、归并排序的概念二、原地归并的抽象方法(一)、原地归并的抽象方法的概念(二)、原地归并的抽象方法的代码示例三、自顶向下的归并排序(一)、自顶向下的归并排序的概念(二)、自顶向下的归并排序的代码示例(三)、自顶向下的归并排序的基本性质四、自底向上的归并排序(一)、自底向上的归并排序的概念(二)、自底向上的归并排序的代码示例(三)、自底向上的归并排序的基本性质一、归并排序的概念​ 归并:即将两个有序的数组归并成一个更大的有序数组。根据归并这一操作,得出一种简单的递归排序算法:归并排序。要将一

2020-10-26 16:06:16 449

原创 复制带随机指针的链表的题型分析(包含流程图分析)

复制带随机指针的链表一、题目要求二、使用HashMap的解法三、使用添加节点的解法四、测试用例五、流程图(一)、使用HashMap的流程图(二)、添加节点的流程图一、题目要求给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的

2020-10-26 00:20:36 72

原创 反转链表题型分析(包含简单与中等难度两种,附带流程图分析)

反转链表题型分析一、反转链表一(简单)(一)、题目要求(二)、解法(三)、测试用例(四)、流程图分析二、反转链表二(中等)(一)、题目要求(二)、解法(三)、测试用例(四)、流程图分析一、反转链表一(简单)(一)、题目要求反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL(二)、解法public class Solution { public sta

2020-10-25 19:36:06 217

原创 初级排序算法之选择排序、插入排序、希尔排序

初级排序算法一、排序算法的辅助方法代码示例二、选择排序算法(一)、选择排序算法的概念(二)、选择排序算法的流程图(三)、选择排序算法的代码示例(四)、选择排序算法的测试用例三、插入排序算法(一)、插入排序算法的概念(二)、插入排序算法的流程图(三)、插入排序算法的代码示例(四)、插入排序算法的测试用例一、排序算法的辅助方法代码示例public class SortUtil { // 对元素进行比较 public static boolean less(Comparable v, Com

2020-10-23 21:42:08 305

原创 算法基础之基础编程模型

算法基础之基础编程模型一、Java程序的基本结构二、原始数据类型与表达式(一)、Java的原始数据类型(二)、表达式(三)、类型转换三、语句四、数组(一)、数组的概念(二)、数组的典型代码示例五、静态方法六、字符串(一)、字符串的概念(二)、字符串的类型转换一、Java程序的基本结构​ 1、原始数据类型:它们在计算机程序中精确地定义整数、浮点数和布尔值等。它们的定义包括取值范围和能够对相应的值进行的操作,它们能够被组合为类似于数学公式定义的表达式。​ 2、语句:语句通过创建变量并为其赋值、控制运行

2020-10-23 16:52:39 287

原创 访问者模式详解附有代码案例分析

访问者模式一、访问者模式的概念与角色(一)、访问者模式的概念(二)、访问者模式的角色二、访问者模式的应用场景三、访问者模式的通用写法四、访问者模式的KPI考核的代码示例五、访问者模式的优缺点(一)、优点(二)、缺点一、访问者模式的概念与角色(一)、访问者模式的概念​ 访问者模式是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。属于行为型模式。​ 访问者模式的基本思想是:针对系统中拥有固定类型数的对

2020-10-21 19:09:36 690

原创 观察者模式详解附有代码案例分析(包含观察者模式使用JDK方式实现)

观察者模式一、观察者模式的概念与角色(一)、观察者模式的概念(二)、观察者的角色二、观察者模式的应用场景三、观察者模式的通用写法四、观察者模式的JDK代码示例——不建议使用(已过时)五、观察者模式的优缺点(一)、优点(二)、缺点一、观察者模式的概念与角色(一)、观察者模式的概念​ 观察者模式又叫做发布-订阅模式。定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖于它的对象都会得到通知并被自动更新。属于行为型模式。​ 观察者模式的核心是将被观察者

2020-10-21 16:02:44 718

原创 解释器模式详解附有代码案例分析

解释器模式一、解释器模式的概念与角色(一)、解释器模式的概念(二)、解释器模式的角色二、解释器模式的应用场景三、解释器模式的通用写法四、解释器模式的四则运算代码案例五、解释器模式的优缺点(一)、优点(二)、缺点一、解释器模式的概念与角色(一)、解释器模式的概念​ 解释器模式是指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来接受语言中的句子。是一种按照规定的语法进行解析的模式,属于行为型模式。​ 解释器模式的作用其实与编译器一样,都是将一些固定的语法进行接受,构建出一

2020-10-20 18:29:00 566

原创 中介者模式详解附有代码案例分析

中介者模式一、中介者模式的概念与角色(一)、中介者模式的概念(二)、中介者模式的角色二、中介者模式的应用场景三、中介者模式的通用写法四、中介者模式的优缺点(一)、优点(二)、缺点一、中介者模式的概念与角色(一)、中介者模式的概念​ 中介者模式又称为调节者模式,用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使得耦合松散,而且可以独立地改变它们之间的交互。属于行为型模式。​ 中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散耦合。

2020-10-19 16:59:20 681 2

原创 备忘录模式详解附有代码案例分析

备忘录模式一、备忘录模式的概念与角色(一)、备忘录模式的概念(二)、备忘录模式的角色二、 备忘录模式的应用场景三、备忘录模式的代码示例四、备忘录模式的优缺点(一)、优点(二)、缺点一、备忘录模式的概念与角色(一)、备忘录模式的概念​ 备忘录模式又称为快照模式,是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态,属于行为型模式。​ 备忘录模式本质是从发起人实体类隔离存储功能,降低实体类的职责。同时由于存储信息独立,且存储信息的实体

2020-10-18 20:53:04 620 2

原创 状态模式详解附有代码案例分析(包含状态模式与其他相关设计模式的对比)

状态模式一、状态模式的概念以及角色(一)、状态模式的概念(二)、状态模式的角色二、状态模式的应用场景三、状态模式的代码示例四、状态模式相关的设计模式(一)、状态模式与责任链模式(二)、状态模式与策略模式五、状态模式的优缺点(一)、优点(二)、缺点一、状态模式的概念以及角色(一)、状态模式的概念​ 状态模式也称为状态机模式,是允许对象在内部状态发送改变时改变它的行为,对象看起来好像修改了它的类,属于行为型模式。​ 状态模式中类的行为是由状态决定的,不同的状态下有不同的行为。其意图是让一个对象在其内

2020-10-18 16:41:48 588

原创 命令模式详解附有代码案例分析(包含命令模式的源码应用分析)

命令模式一、命令模式的概念与角色(一)、命令模式的概念(二)、命令模式的角色二、命令模式的应用场景三、命令模式的代码示例四、命令模式在源码中的应用五、命令模式的优缺点(一)、优点(二)、缺点一、命令模式的概念与角色(一)、命令模式的概念​ 命令模式是对命令的封装,每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式解耦了请求方和接收方,请求方只需请求执行命令,不用关心命令是怎样被接收,怎样被操作以及被执行等。命令模式属于行为型模式。​ 命令模式通过

2020-10-18 11:59:57 896

原创 迭代器模式详解附有代码案例分析(包含迭代器模式的源码应用分析)

迭代器模式一、迭代器模式的概念和角色(一)、迭代器模式的概念(二)、迭代器模式的角色二、迭代器模式的应用场景三、迭代器模式的代码示例四、迭代器模式在源码中的应用五、迭代器模式的优缺点(一)、优点(二)、缺点一、迭代器模式的概念和角色(一)、迭代器模式的概念​ 迭代器模式又称为游标模式,迭代器模式提供一种顺序访问集合/容器对象元素的方法,而又无须暴露集合内部表示。迭代器模式可以为不同的容器提供一致的遍历行为,而不用关心容器内容元素组成结构,属于行为型模式。​ 迭代器模式的本质是抽离集合对象迭代行为

2020-10-18 11:24:12 500 2

原创 责任链模式详解附有代码案例分析(包含责任链模式与建造者模式的结合代码案例)

责任链模式一、责任链模式的概念与角色(一)、责任链模式的概念(二)、责任链模式的角色二、责任链模式的应用场景三、无使用责任链模式的代码示例四、使用责任链模式的代码示例五、责任链模式与建造者模式的结合六、责任链模式的优缺点(一)、责任链模式的优点(二)、责任链模式的缺点一、责任链模式的概念与角色(一)、责任链模式的概念​ 责任链模式是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象

2020-10-16 11:35:20 1389 1

原创 策略模式详解附有代码案例分析(包含策略模式在源码中的应用以及代码示例)

策略模式一、策略模式的概念与角色(一)、策略模式的概念(二)、策略模式的角色二、策略模式的应用场景三、策略模式的通用写法四、策略模式的支付案例代码示例五、策略模式在源码中的应用六、策略模式的优缺点(一)、优点(二)、缺点一、策略模式的概念与角色(一)、策略模式的概念​ 策略模式又叫做政策模式,它是将 定义的算法家族、分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。属于行为型模式。​ 策略模式使用的就是面向对象的继承和多态机制,从而实现统一行为在不同场景下具备不同实

2020-10-16 10:34:57 2295

原创 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)

模板方法模式一、模板方法模式的概念和角色(一)、模板方法模式的概念(二)、模板方法模式的角色二、模板方法模式的应用场景三、 模板方法模式的代码示例四、模板方法模式重构JDBC操作业务五、模板方法模式的优缺点(一)、优点(二)、缺点一、模板方法模式的概念和角色(一)、模板方法模式的概念​ 模板方法模式是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于行为型设计模式。​ 模板方法模式实际上是封装了一个固定流程,该流程由几个步

2020-10-15 21:45:26 484

原创 委派模式详解附有代码案例分析(包含委派模式在JDK中的源码示例解析)

委派模式一、委派模式的概念和角色(一)、委派模式的概念(二)、委派模式的角色二、委派模式的代码示例三、委派模式在源码中的应用四、委派模式的优缺点(一)、优点(二)、缺点一、委派模式的概念和角色(一)、委派模式的概念​ 委派模式又叫委托模式,是一种面向对象的设计模式,允许对象组合实现与继承相同的代码宠用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解为全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式属于行为型模式,不属于GOF23种设计模式中。(二)、委派模式的

2020-10-15 19:58:46 262

原创 适配器模式详解附有代码案例分析(包含类适配器、对象适配器以及接口适配器的代码示例)

适配器模式一、适配器模式的概念和角色(一)、适配器的概念(二)、适配器的角色二、适配器的应用模式三、类适配器的代码示例四、对象适配器的代码示例五、接口适配器的代码示例六、适配器和装饰器模式的对比七、适配器模式的优缺点(一)、优点(二)、缺点一、适配器模式的概念和角色(一)、适配器的概念​ 适配器又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作,属于结构型设计模式。​ 也就是说,当前系统存在两种接口A和B,客户只

2020-10-15 19:10:20 1491

原创 桥接模式详解附有代码案例分析

桥接模式一、桥接模式的概念和角色(一)、桥接模式的概念(二)、桥接模式的角色二、桥接模式的应用场景三、桥接模式的代码示例四、桥接模式的优缺点(一)、优点(二)、缺点一、桥接模式的概念和角色(一)、桥接模式的概念​ 桥接模式也称为桥梁模式。是将抽象部分与它的具体实现部分分离,使他们都可以独立地变化,属于结构型模式。​ 桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背类的单一职责原则,其复用性比较差,桥接模式是比多重继承更好的替代方案

2020-10-15 19:09:01 713

原创 组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)

组合模式一、组合模式的概念和角色(一)、组合模式的概念(二)、组合模式的角色二、组合模式的应用场景三、透明组合模式的代码示例四、安全组合模式的代码示例五、组合模式的优缺点(一)、优点(二)、缺点一、组合模式的概念和角色(一)、组合模式的概念​ 组合模式也称为整体-部分模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性,属于结构型模式。​ 组合模式一般用来描述整体和部分的关系,它将对象组织到树形结构中,最顶层的节点成为

2020-10-14 21:38:57 1285 2

空空如也

空空如也

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

TA关注的人

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