- 博客(36)
- 收藏
- 关注
原创 合成复用原则
基本介绍:原则是尽量使用合成/聚合的方式,而不是使用继承设计原则核心思想: 找出应用中可能需要变化之外,把他们独立出来,不要和那些不需要变化的代码混合在一起 针对接口编程,而不是针对实现编程 为了交互对象之间的松耦合设计而努力
2024-02-05 12:30:18
378
原创 里氏替换原则
类 1{...类 2 extends 类1{方法1(){};类 3 extends 类1{private 类2 ..;方法2(){}方法3(){}方法4(){类2.方法1;
2024-02-05 12:27:23
402
原创 接口隔离原则
基本介绍客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上应传统方法的问题和使用接口隔离原则改进 A类通过接口1依赖B类,C类通过接口1依赖D类,如果接口1对于A类和C类来说不是最小接口,那么B类和D类必须去实现他们不需要的方法 将接口1拆分为独立的几个接口,A类和C类分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则 接口1中出现的方法,根据实际情况拆分为三个接口 个人理解(不对勿喷):接口隔离原则简单来说就是使类对接口的耦合性更
2024-02-05 12:23:35
319
原创 单一职责原则
基本介绍:对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2方案一:一个类一个方法(实现不了所有功能)方案二:多个类(每个类中一个方法)分析: 遵守单一职责原则 但是这样做改动很大,即将类分解,同时修改客户端 改进:直接修改类,改动代码会比较少 方案三:一个类(多个方法)分析: 这种修改方式没有对原来的类做大的修
2024-02-01 12:12:26
355
原创 java设计模式简介
设计模式的重要性:设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。设计模式的目的: 代码重用性(即:相同功能的代码,不能多次编写) 可读性(即:编程规范性,便于其它程序员的阅读和理解) 可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护性) 可靠性(即:当我们增加新的功能后,对原来的功能没有影响) 使程序呈现高内聚,低耦合的特征 设计模式常用的七大原则有: 单一职责原则 接口隔离原则
2024-02-01 12:11:06
297
原创 JDK8-17新特性-JDK8之后的语法新特性汇总下
JDK8-17新特性-JDK8之后的语法新特性汇总下JDK8-17新特性-JDK8之后的语法新特性汇总下
2023-12-12 20:15:45
1187
3
原创 JDK8-17新特性-StreamAPI使用三环节:实例化、中间操作、终止操作
JDK8-17新特性-StreamAPI使用三环节:实例化、中间操作、终止操作
2023-12-09 17:40:24
936
原创 HashMap执行机制
/ 如果table的索引位置的key的hash相同和新的key的hash值相同,并 满足(存在的节点的key 和准备添加的key是同一个对象 || equals返回真),就认为不能加入新的k - value.// 取出hash值对应的table的索引位置的Node(节点),如果为null,就直接把放入的 k - v,创建成一个Node,加入该位置即可.//如果当前的table的已有的table是已有的Node 是红黑树,就按照红黑树排序.//如果整个链表,没有和他相同的,就加到该链表的最后.
2023-11-04 17:20:49
49
1
原创 集合知识点梳理-Map接口的遍历方法
(1) containsKey: 查找键是否存在。(3) entrySet:获取所有关系k-v。(2) keySet:获取所有键。(4) values:获取所有值。Map接口的遍历方法。
2023-03-10 18:57:51
53
1
原创 集合知识点梳理-HashMap小结
(7)HashMap没有实现同步,因此是线程不安全的.方法没有做出同步互斥的操作,没有synchronized.(1) Map接口的常用实现类: HashMap 、Hashtable和Properties。(6)与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的。(4)key不能重复,但是值可以重复,允许使用null键和null值。(3)HashMap是以key - val 对的方式来存储数据。(5) 如果添加相同的key,则会覆盖原来的 k - v。
2023-03-10 18:56:56
66
原创 集合知识点梳理-Map接口和常用方法(JDK8的Map特点)
(8)Map存放数据的key-value,一对k-value是放在一个Node中的,又因为Node实现了Entry接口,有些书上也说一对k-v就是一个Entry。(5)Map的Key可以为null,value亦可以为null,注意key为null,只能有一个,value为null,可以多个.(1)Map与Collection并列存在(无关系).用于保存具有映射关系的数据:Key-Value.(2)Map中的Key和Value可以是任何引用类型的数据,会封装到HashMap$Node对象中.
2023-03-10 18:56:33
77
原创 集合知识点梳理-Map简介
(3) 当添加 k - v 时,通过key的哈希表得到在table的索引.然后判断该索引处是否有元素,如果没有元素直接添加.如果该索引处有元素,继续判断该元素的key是否和准备加入的key相等,如果相等,则直接替换val;(6)java8中,如果一条链表的元素个数超过 TREEIFY_THRESHOLD(默认是8),并且table的大小 >= MIN_TREEIEY_CAPACITY(默认64),就会进行树化(红黑树).(2) 当创建对象时,将加载因子(loadfactor)初始化为0.75.
2023-03-10 18:53:53
67
原创 集合知识点梳理-Set简介
(3)LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这是的元素看起来是以插入顺序保存的.HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树)(4)HashSet不保证元素是有序的,取决于hash后,再确定索引的结果.(5)不能有重复的元素/对象.在前面Set接口使用已经讲过.(1)LinkedHashSet是HashSet的子类.(2)HashSet实际上是HashMap。(1)HashSet 实现了set接口。
2023-03-10 18:53:52
55
原创 集合知识点梳理-单列集合&&双列集合
集合大框:单例集合:CollectionListSetArrayListLinkedListVectorHashSetTreeSet双例集合:MapHashMapTreeMapHashtableProperties。
2023-03-10 18:52:28
51
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人