![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 94
xiejunxing
这个作者很懒,什么都没留下…
展开
-
设计模式-05.01-行为型-观察者&模板
EventBus 翻译为“事件总线”,它提供了实现观察者模式的骨架代码。我们可以基于此框架,非常容易地在自己的业务场景中实现观察者模式,不需要从零开始开发。其中,Google Guava EventBus 就是一个比较著名的 EventBus 框架,它不仅仅支持异步非阻塞模式,同时也支持同步阻塞模式现在,我们就通过例子来看一下,Guava EventBus(可以简单了解一下,但也可直接略过)具有哪些功能。原创 2023-06-27 09:35:56 · 646 阅读 · 0 评论 -
设计模式-05.02-行为型-策略&职责链
策略类的定义比较简单,包含一个策略接口和一组实现这个接口的策略类。因为所有的策略类都实现相同的接口,所以,客户端代码基于接口而非实现编程,可以灵活地替换不同的策略。// 具体的算法... } } public class ConcreteStrategyB implements Strategy {// 具体的算法... } }原创 2023-06-26 19:38:22 · 549 阅读 · 0 评论 -
设计模式-04.01-结构型-代理&桥接&装饰器&适配器
原理和实现讲完了,都不复杂。我们再来看,到底什么时候会用到适配器模式呢?一般来说,适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷。应用这种模式算是“无奈之举”。如果在设计初期,我们就能协调规避接口不兼容的问题,那这种模式就没有应用的机会了。前面我们反复提到,适配器模式的应用场景是“接口不兼容”。那在实际的开发中,什么情况下才会出现接口不兼容呢?我建议你先自己思考一下这个问题,然后再来看下面的总结。原创 2023-06-20 09:16:47 · 1167 阅读 · 0 评论 -
设计模式-03.02-创建型-工厂&建造者&原型
讲完了简单工厂、工厂方法,我们再来看抽象工厂模式。抽象工厂模式的应用场景比较特殊,没有前两种常用,所以不是我们学习的重点,你简单了解一下就可以了。在简单工厂和工厂方法中,类只有一种分类方式。比如,在规则配置解析那个例子中,解析器类只会根据配置文件格式(Json、Xml、Yaml……)来分类。但是,如果类有两种分类方式,比如,我们既可以按照配置文件格式来分类,也可以按照解析的对象(Rule 规则配置还是 System 系统配置)来分类,那就会对应下面这 8 个 parser 类。原创 2023-06-10 18:18:43 · 951 阅读 · 1 评论 -
设计模式-03.01-创建型-单例
23 种经典的设计模式。它们又可以分为三大类:创建型、结构型、行为型。对于这 23 种设计模式的学习,我们要有侧重点,因为有些模式是比较常用的,有些模式是很少被用到的。对于常用的设计模式,我们要花多点时间理解掌握。对于不常用的设计模式,我们只需要稍微了解即可。按照类型和是否常用,对这些设计模式,进行了简单的分类,具体如下所示。原创 2023-06-08 09:37:27 · 694 阅读 · 0 评论 -
设计模式-02.经典设计原则-第二节[必读]
前面讲了控制反转、依赖注入、依赖注入框架,现在,我们来讲一讲今天的主角:依赖反转原则。依赖反转原则的英文翻译是 Dependency Inversion Principle,缩写为 DIP。中文翻译有时候也叫依赖倒置原则。原创 2023-06-07 19:17:09 · 261 阅读 · 0 评论 -
设计模式-02.经典设计原则-第一节[必读]
单一职责原则,开闭原则,里式替换原则原创 2023-06-06 09:45:20 · 300 阅读 · 0 评论 -
设计模式-01.设计思想
看了刚刚的讲解,你可能会有这样的疑问:为了满足这条原则,我是不是需要给每个实现类都定义对应的接口呢?在开发的时候,是不是任何代码都要只依赖接口,完全不依赖实现编程呢?做任何事情都要讲求一个“度”,过度使用这条原则,非得给每个类都定义接口,接口满天飞,也会导致不必要的开发负担。至于什么时候,该为某个类定义接口,实现基于接口的编程,什么时候不需要定义接口,直接使用实现类编程,我们做权衡的根本依据,还是要回归到设计原则诞生的初衷上来。原创 2023-06-04 22:31:59 · 597 阅读 · 0 评论