
design
文章平均质量分 87
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
赵广陆
优快云认证博客专家、优快云的Java领域优质创作者、全网30w+粉丝、超300w访问量、专注于大学生项目实战开发、讲解和答疑辅导、以及产品测评宣传、工具推广等合作。同时招收学生代理、校园代理,对于专业性数据证明一切!
展开
-
设计模式之各种设计模式总结与对比
目录1 目标2 定位3 一句话归纳设计原则4 G0F 23种设计模式简介5 设计模式使用频次总结6 —句话归纳设计模式7 设计模式之间的关联关系和对比原创 2023-02-19 13:38:05 · 2358 阅读 · 0 评论 -
设计模式之观察者模式与访问者模式详解和应用
目录1.访问者模式详解1.1 访问者模式的定义1.1.1 访问者模式在生活中的体现1.1.2 访问者模式的适用场景1.2 访问者模式的通用实现1.3 访问者模式的使用案例之KPI考核1.3.1 类图设计1.3.2 代码实现1.4 访问者模式扩展---分派1.4.1 java中静态分派示例代码1.4.2 java中动态分派1.4.3 访问者模式中伪动态双分派1.5 访问者模式在源码中应用1.5.1 jdk中FileVisitor原创 2023-02-19 13:24:48 · 1106 阅读 · 1 评论 -
设计模式之中介模式与解释器模式详解和应用
目录1 中介模式详解1.1 中介模式的定义1.1.1 中介者模式在生活场景中应用1.1.2 中介者模式的使用场景1.2 中介模式的通用实现1.2.1 类图设计1.2.2 代码实现1.3 中介模式应用案例之聊天室1.3.1 类图设计1.3.2 代码实现1.4 中介者模式在源码中应用1.4.1 jdk中Timer类1.5 中介者模式使用总结1.5.1 优缺点总结1.5.2 与其他模式的关系总结2 解释器模式详解2.1 解释器模式的定义2.1.1 解释器模式在生活场景中应用原创 2023-02-19 13:06:49 · 495 阅读 · 0 评论 -
设计模式之状态模式与备忘录模式详解和应用
目录1.状态模式1.1 目标1.2 内容定位1.3.迭代器模式1.4 应用场景1.5 状态模式在业务场景中的应用1.6 利用状态机实现订单状态流转控制1.7 状态模式在源码中的体现1.8 状态模式相关的设计模式1.9 状态模式的优缺点2 备忘录模式2.1 定义2.2 备忘录模式的应用场景2.3 利用压栈管理落地备忘录模式2.4 备忘录模式在源码中的体现2.5 命令模式的优缺点原创 2023-02-18 23:52:19 · 401 阅读 · 0 评论 -
设计模式之迭代器模式与命令模式详解和应用
目录1 迭代器模式1.1 目标1.2 内容定位1.3 迭代器模式1.4 迭代器模式的应用场景1.5 手写字定义的送代器1.6 迭代器模式在源码中的体现1.7 迭代器模式的优缺点2 命令模式2.1 定义2.2 命令模式的应用场景2.3 命令模式在业务场景中的应用2.4 命令模式在源码中的体现2.5 命令模式的优缺点原创 2023-02-18 17:30:12 · 673 阅读 · 0 评论 -
设计模式之策略模式与责任链模式详解和应用
目录1.策略模式1.1 目标1.2.内容定位1.3.定义1.4.应用场景1.5.促销优惠业务场景1.6 用策略模式实现选择支付方式的业务场景1.7 策略模式在框架源码中的体现1.8 策略模式的优缺点2 责任链模式2.1 责任链楼式的应用场景2.2 利用责任链模式进行数据校验拦截2.3 责任链模式和建造者模式结合使用2.4 责任链模式在源码中的体现2.5 责任链模式的优缺点原创 2023-02-18 16:23:49 · 1428 阅读 · 0 评论 -
设计模式之委派模式与模板模式详解和应用
目录1 委派模式1.1 目标1.2 内容定位1.3 定义1.4 委派模式的应用场景1.5 委派模式在业务场景中的应用1.6 委派模式在源码中的体现1.6.1 双亲委派模型1.6.2 常用代理执行方法 invoke1.6.3 Spring loC中 在调用 doRegisterBeanDefinitions()1.6.4 SpringMVC 的DispatcherServlet1.7 委派模式的优缺点2 模板模式2.1 定义2.2 应用场景2.3 模板方法中的钩子方法原创 2023-02-18 15:50:50 · 689 阅读 · 0 评论 -
设计模式之适配器模式与桥接模式详解和应用
目录1 适配器模式1.1 定义1.2 应用场景1.3 适配器角色1.4 类适配器1.5 对象适配器1.5 接口适配器1.6 实战1.7 源码1.8 适配器与装饰器的对比1.9 适配器模式的优缺点1.10 总结2 桥接模式2.1 原理解析2.2 角色2.3 通用写法2.4 应用场景2.5 业务场景中的运用2.6 源码2.7 桥接模式优缺点2.8 代理、桥接、装饰器、适配器 4 种设计模式的区别原创 2023-02-18 15:02:36 · 1444 阅读 · 0 评论 -
设计模式之享元模式与组合模式详解和应用
目录1 享元模式1.1 享元模式的应用场景1.2 使用享元模式实现共享池业务1.3 享元模式在源码中的应用1.3.1 String中的享元模式1.3.2 Integer中的享元模式1.3.3 Long中的享元模式1.3.4 Apache Commons Pool2中的享元模式1.4 享元模式的内部状态和外部状态1.5 享元模式的优缺点2 组合模式2.1.组合模式定义2.2.组合模式的应用场景2.3.透明组合模式的写法2.4.安全组合模式的写法2.5.组合模式在源码中的应用原创 2023-02-16 23:21:29 · 251 阅读 · 0 评论 -
设计模式之门面模式与装饰器模式详解和应用
目录1 门面模式定义1.1 门面模式的应用场景1.2 门面模式的通用写法1.3 门面模式业务场景实例1.4 门面模式在源码中的应用1.5 门面模式的优缺点2 装饰器模式2.1 装饰器模式定义2.2 装饰器模式的应用场景2.3 装饰器模式在源码中的应用2.4 装饰器模式和代理模式对比2.5 装饰器模式的优缺点原创 2023-02-16 23:04:17 · 612 阅读 · 0 评论 -
设计模式之代理模式详解和应用
目录1 代理模式定义2 代理模式的应用场景3 代理模式的通用写法4 从静态代理到动态代理5 静态模式在业务中的应用6 动态代理在业务中的应用7 手写JDK动态代理实现原理7.1 JDK动态代理的实现原理7.2 CGLib动态代理容易踩的坑8 CGLib代理调用API及原理分析9 CGLib和JDK动态代理对比10 代理模式与Spring生态10 静态代理和动态代理的本质区别11 代理模式的优缺点12 Spring中的代理选择原则原创 2023-02-15 22:45:09 · 1309 阅读 · 0 评论 -
设计模式之原型模式与建造者模式详解和应用
目录1 原型模式1.1 原型模式定义1.2 原型模式的应用场景1.3 原型模式的通用写法(浅拷贝)1.4 使用序列化实现深度克隆1.5 克隆破坏单例模式1.6 原型模式在源码中的应用1.7 原型模式的优缺点1.8 总结2 建造者模式2.1 建造者模式定义2.2 建造者模式的应用场景2.3 建造者模式的基本写法2.4 建造者模式的链式写法2.5 建造者模式应用案例2.6 建造者模式在源码中的体现2.7 建造者模式的优缺点2.8 建造者模式和工厂模式的区别原创 2023-02-15 22:27:02 · 350 阅读 · 0 评论 -
设计模式之单例模式详解和应用
目录1 单例模式的应用场景介绍2 饿汉式单例模式2.1 静态方法获得私有成员对象2.2 利用静态代码块与类同时加载的特性生成单例对象2.3 优缺点3 懒汉式单例模式2.1 加锁2.2 双重检查锁2.3 静态内部类4 反射破坏单例5 序列化破坏单例(扩展知识)6 注册式单例模式6.1 枚举式单例模式6.2 容器式单例7 线程单例实现ThreadLocal8 AbstractFactoryBean源码9 单例模式小结原创 2023-02-14 23:49:27 · 2138 阅读 · 1 评论 -
设计模式之工厂模式详解和应用
目录1 工厂模式的历史由来2.简单工厂模式2.1 简单工厂模式定义2.2 简单工厂模式案例2.3 简单工厂模式相关源码2.4 简单工厂模式优缺点3 工厂方法模式3.1 工厂方法模式定义3.2 工厂方法模式案例3.3 工厂方法模式源码3.4 工厂方法模式优缺点4 抽象工厂模式4.1 抽象工厂模式定义4.2 抽象工厂模式案例4.3 抽象工厂模式优缺点5 简单工厂 vs 工厂方法 vs 抽象工厂原创 2023-02-13 23:07:53 · 1145 阅读 · 0 评论 -
设计模式之为什么要学好设计模式
目录1 回顾软件设计原则2 设计模式总览3 经典框架都在用设计模式解决问题1 回顾软件设计原则不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。原创 2023-02-12 22:34:54 · 2511 阅读 · 0 评论 -
七大设计原则之合成复用原则应用
目录1 合成复用原则介绍2 合成复用原则应用1 合成复用原则介绍合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的。可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。原创 2023-02-12 19:56:14 · 185 阅读 · 0 评论 -
七大设计原则之里氏替换原则应用
目录1 里氏替换原则2 里氏替换原则应用1 里氏替换原则里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都替换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。原创 2023-02-12 19:26:00 · 526 阅读 · 0 评论 -
七大设计原则之迪米特法则应用
目录1 迪米特法则介绍2 迪米特法则应用1 迪米特法则介绍迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知 道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合。迪米特原则主要强调只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称之为成员朋友类,而出现在方法体内部的类不属于朋友类。原创 2023-02-12 18:58:22 · 714 阅读 · 0 评论 -
七大设计原则之单一职责原则应用
目录1 单一职责原则介绍2 单一职责原则应用1 单一职责原则介绍单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个 Class 存在两个导致类变更的原因。如何解决这个问题呢?原创 2023-02-12 18:41:22 · 649 阅读 · 0 评论 -
七大设计原则之接口隔离原则应用
目录1 接口隔离原则介绍2 接口隔离原则应用1 接口隔离原则介绍接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时应当注意一下几点:1、一个类对一类的依赖应该建立在最小的接口之上。原创 2023-02-12 17:24:00 · 407 阅读 · 0 评论 -
七大设计原则之依赖倒置原则应用
目录1 依赖倒置原则2 依赖倒置应用1 依赖倒置原则依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险。原创 2023-02-12 16:02:54 · 327 阅读 · 0 评论 -
七大设计原则之开闭原则应用
目录1 开闭原则介绍2 开闭原则实例1 开闭原则介绍开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。原创 2023-02-11 17:47:57 · 300 阅读 · 0 评论