设计模式
文章平均质量分 92
我思知我在
内容简洁、更喜欢用图文并茂的方式展示文章内容
如果喜欢我就一键三连吧!!!
展开
-
JDK动态代理实现原理详解(源码分析)
无论是静态代理,还是Cglib动态代理,都比较容易理解,本文就通过进入源码的方式来看看JDK动态代理的实现原理进行分析要了解动态代理的可以参考另一篇文章,有详细介绍,这里仅仅对JDK动态代理做源码分析。一文理解JDK静态代理、JDK动态代理、Cglib动态代理源码分析共识为了避免影响分析,一些没用的代码已经被清理JDK动态代理源码分析平时我们是这样使用动态代理的,主要方法在Proxy.newProxyInstance(classLoader, userService.getClass().原创 2020-10-24 16:31:31 · 3805 阅读 · 1 评论 -
一文理解JDK静态代理、JDK动态代理、Cglib动态代理
代理模式通过代理来访问真实的对象,而不是直接去访问真正干活的对象,比如二房东租房,二房是代理者,而一房东才是真正的房东适用场景需要动态修改方法参数方法执行日志功能,比如AOP实现方法拦截记录日志安全检查,比如方法执行时的权限校验角色说明抽象角色:声明代理对象和真实的对象的共同接口(接口或抽象类)代理角色:代理角色内部包含对真实对象的引用,从而可以操作真实的对象,同时代理对象与真实对象拥有同样的接口以便在任何时候都能够替代真实对象。并且代理对象可以对真实对象附加操作,相当于对真实对原创 2020-10-23 21:26:47 · 3588 阅读 · 0 评论 -
一文理解设计模式--命令模式(Command)
命令模式(Command)命令模式就是将命令包装成java对象,来保存命令历史记录和恢复上一个状态、重复执行命令,比如我们写代码的撤销(undo)、取消撤销(redo)适用场景需要undo、redo功能,每个命令具有记录状态功能,比如代码写错了撤销、取消撤销多个命令依据不同情况排序,根据排序后的命令组执行在系统崩溃时可以重新恢复原来的状态。将命令持久化到日志,在崩溃后恢复需要从磁盘重新加载已记录的命令,并使用execute操作重新执行它们角色说明Command:抽象命令类,所有命令原创 2020-10-22 20:55:00 · 3583 阅读 · 0 评论 -
快速理解设计模式六大原则
设计模式的核心总结起来就一句话:用抽象构建框架,用实现扩展细节。目的就是代码修改的改动量最小设计模式六大原则单一职责原则很好理解,一个类职责要单一,不要承载过多的职责,就比如说我们电脑上所有的文件,不可能都放在一起,需要很多个文件夹,而文件夹中的文件相关性越高、文件数量越少,这个文件夹的职责就更单一开闭原则(开放扩展修改关闭)开放扩展关闭修改,实际应用最多的就是抽象类,对一些不变的都进行了抽象,一些变化的交由实现类进行实现里氏替换原则(子类实现父类的要求)主要定义了一些关于继承方.原创 2020-10-21 22:57:58 · 3697 阅读 · 0 评论 -
一文理解设计模式--单例模式(Singleton)
单例模式(Singleton)Singleton模式确保每个Java类加载器只能有一个已有的实例并提供对其的全局访问,单例可以节省内存,加快对象访问速度适用场景需要频繁实例化然后销毁的对象创建对象耗时长或占用资源大,但又要经常用到的对象带有状态的工具类对象频繁访问数据库或文件的对象,一次实例化多次使用单例种类饿汉式:类加载的时候就被初始化,静态字段中实例化懒汉式:延迟加载,调用getInstance()方法时实例化双重检查锁:延迟加载,对上一个进行优化的方式以上都是线程安全的原创 2020-10-21 21:49:49 · 3284 阅读 · 0 评论 -
单例模式之双重检查锁(double check locking)的发展历程
不安全的单例没有注意过多线程安全问题的时候,我们的单例可能是这样的:public final class Singleton { private static Singleton instance; private Singleton () { } public static Singleton getInstance() { if (instance == null) { instance = new Singleton (原创 2020-10-21 21:36:10 · 3474 阅读 · 0 评论 -
一文理解设计模式之--策略模式(Strategy)
首先定义一组算法,将每一个算法封装起来,从而使它们可以相互切换使用场景同样的流程,需要执行不同的策略算法,传入不同策略,执行传入对应的策略算法代码示例/** * Context持有Strategy的引用,并提供了调用策略的方法,所以叫Context * * @author July * @date 2020/10/20 */public class Context { private Strategy strategy; /** * 传入策略 .原创 2020-10-20 22:46:10 · 3289 阅读 · 0 评论 -
一文理解设计模式之--观察者模式(Observer)
当一个对象更改状态,可以自动通知并更新其所有依赖项(观察者),就像是事件总线,谁有监听,有消息时谁就会收到此消息使用场景当一个对象的状态改变,希望其它不知道是谁的对象也能够及时更新并且保证低耦合代码示例import java.util.ArrayList;import java.util.List;/** * 可以通过此接口注册来监听天气情况 */public class Weather { /** * 所有的观察者集合 */ private .原创 2020-10-20 22:20:51 · 3503 阅读 · 0 评论 -
一文快速理解23种经典设计模式
> 对经典的23种设计模式介绍,来判断适合哪种设计模式进行设计23种设计模式: 第1 部分 适应设计模式 Iterator 模式 迭代器,松耦合 Adapter 模式 适配器模式,使用同样的类,提高复用性,提供不同的API,像电压220到5V需要充电器(适配器) 第2 部分 交给子类 Template Method 模式——将具体处理交给子类 ..原创 2020-10-20 21:39:20 · 3584 阅读 · 0 评论 -
工厂模式(简单工厂模式)快速理解
工厂模式一个工厂类根据传入的参数,动态的决定应该创建哪一个产品类(产品类都继承或实现于一个父类或接口),自动创建并返回实例使用场景工厂类负责创建的对象较少,调用者只知道传入参数,对于如何创建对象的逻辑不关心举例例子中展示的是输入金额,计算实际应收金额没有使用工厂模式之前是这样调用的: RebateCash rebateCash = new RebateCash(300,100); double result = rebateCash.acceptCash(原创 2020-10-20 21:21:03 · 3567 阅读 · 0 评论