设计模式
文章平均质量分 82
每天三杯咖啡
图难于其易,为大于其细,天下难事,莫做于于易,天下大事,莫做于细
展开
-
JAVA类隔离机制
doom类隔离机制目录doom类隔离机制类加载概述什么是类加载类加载的好处类加载流程类加载时机加载顺序Luancher源码ExtClassLoader源码AppClassLoader源码双亲委托父加载器不是父类Bootstrap ClassLoader自定义ClassLoader一般步骤举个栗子破坏双亲委托案例Doom的类隔离pandora的类隔离问题&痛点pandora是什么JVM-Sandbox的原创 2022-02-22 15:13:40 · 1797 阅读 · 0 评论 -
Spring源码中的主要几个类功能关系解读
0.ApplicationContextApplicationContext是个接口,实际上也是一个BeanFactory,不过比BeanFactory更加强大,比如: HierarchicalBeanFactory:拥有获取父BeanFactory的功能 ListableBeanFactory:拥有获取beanNames的功能 ResourcePatternResolver:资源加载器,可以一次性获取多个资源(文件资源等等) EnvironmentCapable:可以获取运行时环境(没有设原创 2021-09-08 01:16:53 · 278 阅读 · 0 评论 -
spring源码 基于JDK8仿写spring(持续更新)
1.自动扫描bean注入经典入口/** * @author xzc */public class Test { public static void main(String[] args) { XzcApplicationContext applicationContext = new XzcApplicationContext(XzcAppConfig.class); UserInterface userService = (UserIn...原创 2021-09-05 03:39:32 · 365 阅读 · 0 评论 -
spring源码初体验01 从对象到bean的生命历程
首先我们创建context容器然后进行测试/** * @Author: xzc * @Date: 2021/8/20 23:50 * @Version 1.0 */public class XzcSpringBeanLearnMain { public static void main(String[] args) { /** * userService.class -> 推断构造(默认无参构造方法 有参构造方法会去ioc里根据类型 名字 拿入参 没有报错) -...原创 2021-09-04 17:21:50 · 120 阅读 · 0 评论 -
JVM 初体验 类加载器自定义与打破双亲委派机制
类加载器分三步来理解1.基本原理 双亲委派机制JVM类加载器是有亲子层级结构的,如下图 这里类加载其实就有一个双亲委派机制,加载某个类时会先委托父加载器寻找目标类,找不到再 委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的 类加载路径中查找并载入目标类。 比如我们的Math类,最先会找应用程序类加载器加载,应用程序类加载器会先委托扩展类加载 器加载,扩展类加载器再委托引导类加载器,顶层引导类加载器在自己的类加载路径里找了半天 没找到Math类,则向下退回加..原创 2021-08-18 23:17:52 · 227 阅读 · 0 评论 -
梳理SpringIOC的设计思想与技巧
重新梳理SpringIOC里面的设计原则前言设计模式代码案例前言之前一直想把设计模式写出来但是总感觉写不下去,原因无非在于设计模式的本质还是一种思想,一种技术运用的技巧的沉淀。既然如此不妨从实际的优秀代码去反推理论在其中的运用设计模式面向对象的七(或五大原则,前五项)大基本原则:单一职责原则(SRP) 、开放封闭原则(OCP) 、里氏替换原则(LSP)、 依赖倒置原则(DIP)、 接口隔离原则(ISP)、迪米特法则(Law Of Demeter)、组合/聚合复用原则(Composite/Agg原创 2021-08-01 04:31:17 · 276 阅读 · 0 评论 -
05 策略模式 的使用方法
05策略模式在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。如果采用策略模式就能很好解决该问题。策略模式的定义与...原创 2020-05-08 08:14:51 · 270 阅读 · 0 评论 -
04工厂模式综合(简单工厂,工厂方法,抽象工厂)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。一 工厂模式演化过程的描述例子 1)还没有工厂时代:假如还没有工业革命,如果一个客户要一款宝马车,一般的做...原创 2020-05-07 08:17:45 · 181 阅读 · 0 评论 -
温故而知新 03建造者模式的实现回顾
需求:创建复杂的对象---通过简单的对象的自由组合,返回一个完整的产品。意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变...原创 2020-05-04 12:47:34 · 128 阅读 · 0 评论 -
02 原型模式
02 原型模式Java中怎么拷贝一个对象呢?可以通过调用这个对象类型的构造器构造一个新对象,然后将要拷贝对象的属性设置到新对象里面。1.Java中也有另一种不通过构造器来拷贝对象的方式,这种方式称为克隆。2.Java提供了java.lang.Cloneable和java.lang.Object中的clone()方法来支持克隆。使用条件是用于创建重复的对象,同时又能保证性能。这种类型的设...原创 2020-04-29 20:58:25 · 171 阅读 · 0 评论 -
温故而知新 设计模式01 单例模式
01单例模式用啥方式解决实际问题更合适就用啥方式,我们不追求那些不必要的完美饿汉模式01 最简单版但是好用package xzc._01singleton;/*饿汉模式01Class.forName() 也行啊1.放单例的静态变量2.构造方法私有化3.取出单例的静态化方法类加载到内存后就会自动实例化一个单例*/public class...原创 2020-04-27 22:09:36 · 143 阅读 · 0 评论