定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 什么是模板方法当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会 ......
325
0
0
2022-11-27
题目要求给定二叉树的根节点root,请用先序/中序/后序遍历分别返回其节点值代码class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this ......
297
0
0
2022-11-27
通过拷贝已有对象快速创建新对象的方法原型模式Prototype pattern refers to creating duplicate object while keeping performance in mind. This type of design pattern comes under creational pattern as this pa ......
332
0
0
2022-11-27
define an interface or abstract class for creating an object but let the subclasses decide which class to instantiate.工厂方法模式define an interface or abstract class for creating an ob ......
273
0
0
2022-11-27
为其他对象提供一种代理以控制对这个对象的访问代理模式代理模式( Proxy):为其他对象提供一种代理以控制对这个对象的访问。 参考:refactoringguru | proxy什么是代理模式有时候如果想要访问某个对象,但又没办法直接访问或不方便直接访问,可以使用代理模式,代理模式为想要访问的那个真实对象提供一种“替身”,将客户端直接对服务端的访问转换为客户 ......
304
0
0
2022-11-27
两种特殊的二叉树完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说, ......
276
0
0
2022-11-26
动态的给某些对象添加额外的功能装饰模式装饰模式:动态的给某些对象添加额外的功能什么是装饰模式装饰模式也叫装饰器模式,python中的装饰器就是这种模式的体现,对于一个类,如果要添加一个新功能,除了修改代码外(违反开闭原则),可以使用继承,但通过继承添加新功能并不适合所有场景,如类不可见或不允许继承需要对一批类似的兄弟类添加同一个新功能时,继承会产生大量的子类 ......
316
0
0
2022-11-26
如果某个系统需要不同的算法(如超市收银的优惠算法),那么可以把这些算法独立出来,使之之间可以相互替换,这种模式叫做策略模式策略模式如果某个系统需要不同的算法(如超市收银的优惠算法),那么可以把这些算法独立出来,使之之间可以相互替换,这种模式叫做策略模式,它同样具有三个角色:环境角色:使用策略的类抽象策略角色:策略共有的抽象类或接口具体策略角色:具体的策略的实 ......
311
0
0
2022-11-26
通过传给工厂类的参数的不同,返回不同的对象简单工厂模式简单工厂通过传给工厂类的参数的不同,返回不同的对象,包括三部分组成:具体的”产品“工厂类(实例化并返回”产品“)客户端(使用”产品“)为什么使用简单工厂:”产品“的创建过程可能很复杂,涉及到多个不同类之间的依赖,通过简单工厂将创建过程隐藏在工厂类中,一方面减轻了客户端使用该产品的难度,另一方面也防止了客户 ......
325
0
0
2022-11-26
单一职责,里氏替换,依赖倒置,接口隔离,迪米特法则,开闭原则设计模式的六大原则参考:设计模式六大原则1. 单一职责原则一个类只负责一个明确的功能优点:降低类的复杂度,提高代码可读性和可维护性降低变更时对其他功能的影响2. 里氏替换原则原则一:若 o1 是 C1 的一个实例化对象, o2 是 C2 的一个实例化对象,如果在使用 C1 的程序中将o1 替换为 o ......
376
0
0
2022-11-26
概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头当head==tail时情况1:队列为空情况2:队列为满用链表的方式形成队列public class MyQueueByLinkedList { //Node 这个类叫做内部类 ......
361
0
0
2022-11-26
Cowards are afraid of happiness, get hurt when they encounter cotton, and sometimes be hurt by happiness.RSA非对称加密(相当于把锁(公钥)发给别人,钥匙(私钥)自己留着,别人拿到锁后用锁加密数据,传送给自己,自己就可以用钥匙解密了。)加解密过程取两个大 ......
327
0
0
2022-11-26
引出问题在之前的顺序表中,如果定义了一个int类型的顺序表(或这说是数组),就只能存储整数,这样显然是不合适的。 应该让这个类同时存储多种类型的数据,就引出了“泛型”这样的概念Object类Object是所有父类的子类,在某种意义上也可以代替泛型进行使用,但是在使用的过程中也会出现一些问题: 例如以下代码使用Object来实现的public class Te ......
428
0
0
2022-11-26
处理异常在程序运行过程中通常会遇到以下异常: 空指针异常/数组下标越界异常…所谓异常指的就是程序在 运行时 出现错误时通知调用者的一种机制.处理异常的格式为:try{ 异常代码 }catch{ 异常的处理 }finally{ 异常的出口(无论是否触发异常,都一定会执行) }try 代码块中放的是可能出现异常的代码.catch 代码块中放的是出现异常后的处理行 ......
322
0
0
2022-11-26
StringBuffer 和 StringBuilde任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类这里的两个类大致一样,下面用St ......
304
0
0
2022-11-26