设计模式
文章平均质量分 67
设计模式
素净小凡人
一个在后端路上的小程序猿
展开
-
最安全的单例模式-枚举
枚举实现首先我们先看一下枚举实现单例模式public enum EnumSingleton { INSTANCE; // 枚举能够绝对有效的防止实例化多次,和防止反射和序列化破解 public void add() { System.out.println("add方法..."); }}Test类public class Test { public static void main(String[] args) { E原创 2021-01-17 15:48:20 · 941 阅读 · 7 评论 -
反射技术破解单例模式
反射破解我们先看一段代码/** * @Description: * @ClassName design_pattern * @Author: 王瑞文 * @Date: 2021/1/16 21:08 */public class Test { //如何去破解单例 public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTarge原创 2021-01-17 14:09:10 · 2458 阅读 · 7 评论 -
单例模式实现(七种)
文章目录1、什么是单例模式2、单例模式优缺点3、七种方法去实现单例模式1)饿汉式2)懒汉式(线程不安全)3)懒汉式(线程安全)4)双重检验锁(DCL)5)静态内部内形式6)枚举形式7)使用容器管理1、什么是单例模式单例模式确保一个类只有一个实例,并提供一个全局访问点,实现单例模式的方法是私有化构造函数,通过getInstance()方法实例化对象,并返回这个实例保证在JVM中只有一个实例2、单例模式优缺点优点:1、单例类只有一个实例2、共享资源,全局使用3、节省创建时间,提高性能缺原创 2021-01-17 13:54:20 · 417 阅读 · 0 评论 -
手写JDK动态代理
先看代码实现然后我们去剖析源码1、还是需要去创建我们需要代理的代理类的接口和实现servicepublic interface OrderService { void test() throws Throwable;}implpublic class OrderServiceImpl implements OrderService { @Override public void test() { System.out.println("【Test】"原创 2021-01-16 22:40:13 · 310 阅读 · 1 评论 -
代理模式(静态、动态)
文章目录一、代理模式1、什么是代理模式2、为什么使用代理模式3、代理模式应用场景4.、代理模式实现原理5、代理模式创建的方式6、静态代理6.1基于接口方式6.1基于继承方式7、动态代理7.1JDK动态代理7.11实现步骤7.2CGLIB动态代理7.21CGLIB是什么呢?7.21CGLIB原理7.21CGLIB优缺点7.21CGLIB实现步骤一、代理模式1、什么是代理模式代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。2、为什么使原创 2021-01-16 22:20:58 · 340 阅读 · 0 评论 -
装饰者模式
引言一级缓存和二级缓存大家应该不陌生。下面我们看一个一级缓存和二级缓存二级缓存客户端查询数据,先查Redis,如果Redis中没有的话再去EHCache中去查询如果EHCache也没有则会去数据库中查询,然后分别再缓存到前两级缓存中一级缓存我们想一下早期只有一级缓存但是后来有二级缓存了我们想加入进去,怎么保证在不修改一级缓存的情况下加入二级缓存呢?这就用到了我们的装饰者模式装饰者模式的定义抽象组件:定义一个抽象接口来规范准备附加功能的类具体组件:将要被附加功能的类实现抽象构建角色接口原创 2021-01-15 21:39:14 · 286 阅读 · 0 评论 -
模板方法设计模式
文章目录什么是模版方法?核心设计要点模版方法应用场景模板方法优缺点模板方法举例1、模板定义2、子类去继承模板3、定义工厂去返回不同模板4、写测试类去测试6、断点调试执行流程什么是模版方法?1.定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术,没有关联关系。 因此,在模板方法模式的类结构图中,只有继承关系。核心设计要点Abstr原创 2021-01-15 21:12:01 · 535 阅读 · 0 评论 -
责任链设计模式
什么是责任链模式?客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。其过程实际上是一个递归调用。主要特点是: 1、有多个对象共同对一个任务进行处理。2、这些对象使用链式存储结构,形成一个链,每个对象知道自己的下一个对象。3、一个对象对任务进行处理,可以添加一些操作后将对象传递个下一个任务。也可以在此对象上结束原创 2021-01-14 20:53:09 · 287 阅读 · 0 评论 -
策略模式(解决多重if判断问题)
什么是策略模式?策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。1.环境(Context)角色:持有一个Strategy的引用。2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。实现步骤:定义策略接口(提前使用枚举/工厂模式初始化具体策略、可以将策略放债Map中:key为类名原创 2021-01-14 20:44:21 · 2068 阅读 · 0 评论