设计模式
文章平均质量分 80
马小茜
笑看烟雨红尘
一念善,万水千山;一念恶,沧海桑田
展开
-
源码分析设计模式之代理模式(四、动态代理模式之 CGLIB 动态代理)
一、CGLIB 动态代理静态代理和 JDK 动态代理模式有个相同的特点就是都是依靠接口实现的,然而并不是所有的类都有接口的,这个时候就用不了 JDK 动态代理了,CGLIB 动态代理就可以闪亮登场了CGLIB 动态大力采用了非常底层的字节码技术,其原理是通过字节码技术在内存中为一个类创建子类,并在子类中采用方法拦截的方式拦截所有父类方法的调用,顺势织入横切逻辑,实现方法增强二、CGLIB 动态代理实现步骤查找 A 类上的所有非 final 的 public 类型的方法定义将这些方法的定义转换成字原创 2021-12-27 16:05:35 · 193 阅读 · 0 评论 -
源码分析设计模式之代理模式(三、动态代理模式之 JDK 动态代理)
一、动态代理动态代理是指在运行时,动态生成代理类。即,代理类的字节码将在运行时生成并载入当前的 ClassLoader动态代理的主要特点就是能够在程序运行时 JVM 才为被代理对象生成代理对象动态代理和静态代理角色一样动态代理分为两大类:基于接口的 JDK 动态代理和基于类的 CGLIB 动态代理通常说的动态代理指的是 JDK 动态代理与静态代理类想比,动态类有诸多好处。首先,不需要为真是主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也是非常烦人的事,原创 2021-06-29 17:29:59 · 90 阅读 · 0 评论 -
源码分析设计模式之代理模式(二、静态代理模式)
一、静态代理模式静态代理是代理类在编译期间就创建好了,不是编译器生成的代理类,而是手动创建的类。在编译时就已经将接口,被代理类,代理类等确定下来。在软件设计中所指的代理一般是指静态代理,也就是在代码中显式指定的代理二、实现静态代理四步骤定义业务接口被代理类实现业务接口定义代理类并实现业务接口最后便可通过客户端进行调用三、实现代码/** * 抽象角色:出租房 */interface Rent { void rent();}/** * 真实角色:房东 */class原创 2021-06-13 17:46:05 · 92 阅读 · 0 评论 -
源码分析设计模式之代理模式(一、代理模式的介绍)
一、代理模式的定义这是一种设计模式,它提供了间接对目标对象进行访问的方式。即:通过代理对象访问目标对象。通俗的来讲代理模式就是我们生活中常见的中介这么做的好处是:我们可以在目标对象实现的功能上增加额外的功能补充,即扩展目标对象的功能。这样就符合了设计原则中的开闭原则,即:在不改动现有代码的情况下进行功能的扩展二、代理模式中的角色抽象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象真实角色: 也称为委托角色或者被代理角色。定义了代理对象所代表的目标对象原创 2021-06-13 16:50:04 · 119 阅读 · 0 评论 -
源码分析设计模式之原型模式
一、原型模式简介原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如:一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。在原创 2021-06-06 23:26:34 · 214 阅读 · 4 评论 -
源码分析设计模式之工厂模式(三、抽象工厂模式)
上篇文章讲到了对工厂方法模式进行变化后带来的缺陷,而为了解决工厂方法模式所带来的缺陷,从而引出了抽象工厂模式。在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性。一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,而不是单一的产品对象,如一个电器工厂,它可以生产电视机、电冰箱、空调等多种电器,而不是只生产某一种电器。为了更好地理解抽象工厂模式,先引入两个概念:产品等级:就好比一个抽象类是手机,其子类有苹果原创 2021-06-06 20:40:49 · 162 阅读 · 5 评论 -
源码分析设计模式之工厂模式(二、工厂方法模式)
上篇文章讲到了简单工厂模式众多缺陷,为了解决简单工厂模式带来的缺陷,从而引出了工厂方法模式二、工厂方法模式工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象简单理解就是: 将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中角色组成抽象工厂角色:它是具体工厂继承的父类或者实现的接口具体工厂角色:它含有和具体原创 2021-05-30 22:41:28 · 128 阅读 · 10 评论 -
源码分析设计模式之工厂模式(一、简单工厂模式)
我们开发过程中经常听到工厂这个词,工厂顾名思义就是创建产品。根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建在实际工作中简单工厂用的是比较多的。工厂方法和抽象工厂是 GoF23 种设计模式中的一种,而常使用的简单工厂并不是一种设计模式,可以说是我们自己的一种俗称原创 2021-05-29 17:04:57 · 283 阅读 · 8 评论