
设计模式就该这样学
文章平均质量分 86
设计模式就该这样学
Tom 弹架构
咕泡教育联合创始人、Java架构师丛书作者
展开
-
这9个单例被破坏的事故现场,你遇到过几个?
1 通用单例写法带来的弊端 我们看到的单例模式通用写法,一般就是饿汉式单例的标准写法。饿汉式单例写法在类加载的时候立即初始化,并且创建单例对象。它绝对线程安全,在线程还没出现之前就实例化了,不可能存在访问安全问题。饿汉式单例还有...原创 2021-10-26 14:52:00 · 160 阅读 · 0 评论 -
从没有人将代理模式分析得如此透彻
1 从静态代理到动态代理 举个例子,有些人到了适婚年龄,会被父母催婚。而现在在各种压力之下,很多人都选择晚婚晚育。于是着急的父母就开始到处为子女相亲,比子女自己还着急。下面来看代码实现。创建顶层接口IPerson的代码如下。 ...原创 2021-10-27 13:18:00 · 133 阅读 · 0 评论 -
这才是责任链模式的优雅使用方式
1 使用责任链模式设计热插拔权限控制 本文节选自《设计模式就该这样学》作者 谭勇德(Tom) ...原创 2021-10-27 18:30:00 · 111 阅读 · 0 评论 -
一张图彻底搞懂Spring循环依赖
1 什么是循环依赖? 如下图所示: ...原创 2021-10-29 15:27:00 · 204 阅读 · 0 评论 -
1个月连载30个设计模式真实案例,挑战年薪60W不是梦
本文所有内容均节选自《设计模式就该这样学》 本文自2021年10月29日起持续连载,请大家持续关注.... ...原创 2021-10-29 20:55:00 · 182 阅读 · 0 评论 -
趣谈装饰器模式,让你一辈子不会忘
本文节选自《设计模式就该这样学》 1 使用装饰器模式解决煎饼加码问题 ...原创 2021-11-01 16:38:00 · 106 阅读 · 0 评论 -
一文读懂深克隆与浅克隆的关系
本文节选自《设计模式就该这样学》 1 分析JDK浅克隆API带来的问题 ...原创 2021-11-02 17:44:00 · 98 阅读 · 0 评论 -
如何快速实现第三方登录且易扩展?
本文节选自《设计模式就该这样学》 1 使用类适配器重构第三方登录自由适配 ...原创 2021-11-03 13:37:00 · 173 阅读 · 0 评论 -
没有性能瓶颈的无限级菜单树应该这样设计
本文节选自《设计模式就该这样学》 1 使用透明组合模式实现课程目录结构 ...原创 2021-11-04 13:01:00 · 152 阅读 · 0 评论 -
搞懂钩子方法和模板方法,看完这篇就够了
本文节选自《设计模式就该这样学》 通常的模板方法模式中会设计一个abstract的抽象方法,交给它的子类实现,这个方法称为模板方法。而钩子方法,是对于抽象...原创 2021-11-07 17:48:00 · 181 阅读 · 0 评论 -
你以为委派模式很神秘,其实你每天都在用
本文节选自《设计模式就该这样学》 1 使用委派模式模拟任务分配场景 ...原创 2021-11-09 12:08:00 · 99 阅读 · 0 评论 -
彻底说透简单工厂那些你没有关注过的细节
本文节选自《设计模式就该这样学》 1 使用简单工厂模式封装产品创建细节 ...原创 2021-11-10 14:01:00 · 96 阅读 · 0 评论 -
意外发现,原来你不知道自己每天都在用门面模式
1 使用门面模式整合已知API的功能 一般的电商平台都是整合众多的子系统聚合到一起形成一个大型的购物平台,一般情况下,有很多现成的功能都不是重新开发的,而是要去对接已有的各个子系统,这些子系统可能涉及积分系统、支付系统、物流系统...原创 2021-11-13 13:28:00 · 89 阅读 · 0 评论 -
彻底搞懂Spring状态机原理,实现订单与物流解耦
本文节选自《设计模式就该这样学》 1 状态模式的UML类图 ...原创 2021-11-16 13:46:00 · 251 阅读 · 0 评论 -
基于Guava API实现异步通知和事件回调
本文节选自《设计模式就该这样学》 ...原创 2021-11-17 16:02:00 · 193 阅读 · 0 评论 -
这个无敌设计,可以解析并运算任意数学表达式
本文节选自《设计模式就该这样学》 ...原创 2021-11-18 14:18:00 · 129 阅读 · 0 评论 -
100行代码,轻松实现文本编辑器中草稿箱功能
本文节选自《设计模式就该这样学》 ...原创 2021-11-22 14:29:00 · 699 阅读 · 0 评论 -
微信和QQ这么多群,该如何管理好友关系?
本文节选自《设计模式就该这样学》 ...原创 2021-11-23 13:39:00 · 117 阅读 · 0 评论 -
没有性能瓶颈的无限极菜单树应该这样设计
本文节选自《设计模式就该这样学》 ...原创 2021-11-25 10:30:00 · 193 阅读 · 0 评论 -
彻底搞懂访问者模式的静态、动态和伪动态分派
本文节选自《设计模式就该这样学》 1 使用访问者模式实现KPI考核的场景 ...原创 2021-11-26 16:05:00 · 118 阅读 · 0 评论 -
对象池模式(Object Pool Pattern)
本文节选自《设计模式就该这样学》 1 对象池模式的定义 ...原创 2021-11-26 16:06:00 · 131 阅读 · 0 评论 -
规格模式(Specification Pattern)
本文节选自《设计模式就该这样学》 1 规格模式的定义 ...原创 2021-11-26 16:06:00 · 198 阅读 · 0 评论 -
使用策略模式重构电商折扣和支付场景
本文节选自《设计模式就该这样学》 1 使用策略模式实现促销优惠方案选择 ...原创 2021-11-05 14:31:00 · 231 阅读 · 0 评论 -
为什么一定要学习设计模式
先来看一个生活案例,当我们开心时,也许会寻求享乐。在学习设计模式之前,你可能会这样感叹: 学完设计模式之后,你可能会这样感叹...原创 2021-10-30 00:00:00 · 110 阅读 · 0 评论 -
软件架构设计原则之依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低...原创 2021-10-24 17:09:00 · 115 阅读 · 0 评论 -
软件架构设计原则之合成复用原则
合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a)而不是继承关系达到软件复用的目的。可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。 ...原创 2021-10-22 16:57:00 · 118 阅读 · 0 评论 -
就因为把int改成Integer,第2天被辞了
本文节选自《设计模式就该这样学》之享元模式(Flyweight Pattern) 1 故事背景 ...原创 2021-11-01 23:22:00 · 94 阅读 · 0 评论 -
软件架构设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 ...原创 2021-10-22 16:56:00 · 109 阅读 · 0 评论 -
这样学BAT必面之软件设计原则,还不会就是我的问题
学习设计原则是学习设计模式的基础。在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。 ...原创 2021-10-23 16:02:00 · 100 阅读 · 0 评论 -
软件架构设计原则之开闭原则
开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定、灵活的系...原创 2021-10-21 21:30:00 · 120 阅读 · 0 评论 -
软件架构设计原则之单一职责原则
单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。如何解决这个问题呢?将两个职责用两个类来实现,进行解耦。...原创 2021-10-22 16:49:00 · 110 阅读 · 0 评论 -
软件架构设计原则之迪米特法则
迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内...原创 2021-10-22 16:55:00 · 93 阅读 · 0 评论 -
软件架构设计原则之接口隔离原则
接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时应当注意以下几点: (1)一个类对另...原创 2021-10-22 16:53:00 · 117 阅读 · 0 评论 -
全面通透深入剖析工厂方法模式
本文节选自《设计模式就该这样学》 1 工厂方法模式的应用场景 ...原创 2021-11-11 12:43:00 · 132 阅读 · 0 评论 -
空对象模式(Null Object Pattern)
本文节选自《设计模式就该这样学》 1 空对象模式的定义 ...原创 2021-11-26 16:06:00 · 140 阅读 · 0 评论 -
使用桥接模式设计复杂的消息系统
本文节选自《设计模式就该这样学》 举个例子,我们在平时办公的时候经常通过邮件消息、短信消息或者系统内消息与同事进行沟通。尤其在走一些审批流程的时候,我们需...原创 2021-11-08 16:06:00 · 107 阅读 · 0 评论 -
雇工模式(Employee Pattern)
本文节选自《设计模式就该这样学》 1 雇工模式的定义 ...原创 2021-11-26 16:06:00 · 112 阅读 · 0 评论 -
手写自定义迭代器,秒懂迭代器底层原理
本文节选自《设计模式就该这样学》 迭代器模式的UML类图如下图所示。 ...原创 2021-11-15 13:48:00 · 271 阅读 · 0 评论 -
使用命令模式重构播放器控制条
...原创 2021-11-19 16:04:00 · 106 阅读 · 0 评论 -
1W字手写数据库连接池,让抽象工厂不再抽象
本文节选自《设计模式就该这样学》 1 关于产品等级结构和产品族 ...原创 2021-11-12 13:38:00 · 90 阅读 · 0 评论