
设计模式
文章平均质量分 92
雪过梅香
这个作者很懒,什么都没留下…
展开
-
SpringMVC 执行流程 记录一下
讲道理,源码如果想完全搞懂真的很难,毕竟不是站在作者的角度去思考的,只能去理解一些浅显的思想和一些地方采用了设计模式。从源码中可以看出,为什么明明一行代码就可以搞定的CURD,要引入那么多接口、抽象类,以及各种设计模式?? 从以前有一些工作经验之后,觉得springmvc的思想就是,有一个前端控制器去结合tomcat的统一监听入口做统一拦截,之后mvc作为任务的分发利用反射处理之后返回数据,但是万万没想到= =竟然这么复杂,有机会一定会更深入去了解,先继续往后学吧 SpringMVC 工作流程 mvc工作流原创 2021-05-23 17:31:18 · 99 阅读 · 0 评论 -
原型模式理解
原型模式: 原型模式可以理解为,以某一个对象为原型,生成一个新的毫无关联,但是初始化数值一致的全新对象。 看一下关系图 几个需要深拷贝的对象以及内嵌对象后面是通过序列化的形式作为解决方案所以需要实现序列化接口。 Monkey.class 作为统一的父类,拥有两个基本类型: 年龄、名称和一个引用类型:生日 在浅拷贝中,引动对象会使用相同的内存地址中的对象,而深拷贝是完全隔离开来的,本次只介绍深拷贝。 Monkey.class最终也是通过序列化转为字节码所以也需要实现序列化接口 GoldenHoop.cl原创 2020-11-02 11:19:01 · 216 阅读 · 1 评论 -
反射、序列化破坏单例模式
在单例模式中,了解到的两种破坏无法保证对象唯一性的写法。 比如有人我就不按正常套路去写,我就要装逼,我就要去破坏你的单例。 上代码: 打印结果可以看到,利用反射的话,对象地址并不相同,这个解决办法如下图: Java中,只要是一个类,无论是否实现构造器都会拥有一个默认的构造器,反射也利用这个特点,会忽略掉是否是private等等… 在构造器中新增一个判断,判断当前的这个对象是否为空,如果不为空直接抛出异常去阻止这个对象的重复创建。 序列化方式破坏单例: 序列化破坏单例只有在 单例对象实现了序列化接口才原创 2020-10-31 14:06:30 · 250 阅读 · 0 评论 -
饿汉式,懒汉式,双重懒汉式,静态内部类单例模式
单例模式,目前看到,饿汉式,懒汉式,双重验证懒汉式,饿汉式static final object = new object() 当类加载的时候直接初始化,并且不可改变,私有化构造器,对外开放一个获取接口。 缺点,当单例对象过多时占用没有必要的内存空间。 上代码: 懒汉式单例模式:当需要使用的时候进行对象的创建,通过判空加锁方法的形式去解决单例问题,但是如果一个线程竞争到锁进入new实例方法,所有线程全部阻塞等待锁的释放,如果出现以外,导致全部死锁。 双重验证懒汉式单例模式:将锁放入方法中,而不是直接锁住原创 2020-10-29 15:31:58 · 256 阅读 · 4 评论 -
简单工厂、工厂方法、抽象工厂的区别
简单工厂 先看一下目录结构 再说一下大致的逻辑,首先创建一个起始接口,IUser,之后出现一个用户需要去实现这个用户接口,按照以往的创建逻辑,每次一个用户进行一次new,工厂意味着自己不需要去在乎他的创建逻辑,不需要知道怎么创建,只需要给定一个约束值,通过这个约束值我就知道如何去创建自己想要的某个对象,让使用者只在乎结果,不必在乎过程。 这里是项目的结构图,userWang 实现了IUser接口,从而别的用户新增进来也是,当这些用户出现一些共性的时候,只需要新增一个类去实现这个IUser接口可以做到统原创 2020-10-28 09:31:59 · 173 阅读 · 0 评论