初学 Java 设计模式(二十):实战状态模式 「亲身实践,简单高效的时间管理——番茄工作法」

2021-06-11
阅读 4 分钟
2k
一、状态模式介绍1. 解决的问题主要解决在对象一个内部状态发生变化时,改变其行为的问题。2. 定义状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。3. 应用场景如果对象需要根据自身当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频...

初学 Java 设计模式(十九):实战观察者模式 「您的快递已到达蜂站,请及时签收」

2021-06-06
阅读 6 分钟
1.6k
一、观察者模式介绍1. 解决的问题主要解决将一个对象的状态改变通知给其他对象的问题。2. 定义观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。3. 应用场景当一个对象的改变需要改变其他对象,或实际对象时是事先未知的或动态变化时,可使用观察者模式。当...

初学 Java 设计模式(十八):实战备忘录模式 「线上刚发布就出问题怎么办?」

2021-05-23
阅读 6 分钟
1k
一、备忘录模式介绍1. 解决的问题主要解决在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以恢复原先保存的状态。2. 定义备忘录模式是一种行为设计模式,允许在不暴露对象实现细节的状态下保存和恢复对象之前的状态。3. 应用场景当你需要创建对象状态快照来恢复其之前的状态时,可...

初学 Java 设计模式(十七):实战中介者模式 「菜鸟驿站」

2021-05-15
阅读 6 分钟
1.3k
一、中介者模式介绍1. 解决的问题主要解决当对象与对象之间存在大量关联关系时,若一个对象发生改变,要跟踪与之相关的对象,同时做出相应处理的问题。2. 定义中介者模式是一种行为设计模式,能减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。3. 应用场景当一些...

初学 Java 设计模式(十六):实战迭代器模式 「你有多少 QQ 好友呢?」

2021-05-10
阅读 7 分钟
1.8k
一、迭代器模式介绍1. 解决的问题主要解决遍历整个集合对象的问题。2. 定义迭代器模式是一种行为设计模式,能在不暴露底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。3. 应用场景当集合背后为复杂的数据结构,且希望对客户端隐藏其复杂性时(处于使用便利性或安全性考虑),可以使用迭代器模式。减少程序...

初学 Java 设计模式(十五):实战命令模式 「扫码点餐」

2021-04-24
阅读 5 分钟
1.9k
命令模式是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。这个转换会根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。

初学 Java 设计模式(十四):实战责任链模式 「请求中间件」

2021-04-18
阅读 5 分钟
2.4k
一、责任链模式介绍1. 解决的问题主要解决请求发送者和处理者的解耦问题。2. 定义责任链模式是一种行为设计模式,允许将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。3. 应用场景当程序需要不同方式处理不同种类请求,而且请求类型和顺序预先未知时,可以使用责...

初学 Java 设计模式(十三):实战代理模式 「视频 App 代理缓存」

2021-04-10
阅读 5 分钟
1.8k
一、代理模式介绍1. 解决的问题主要解决直接访问对象时带来的问题,比如对象创建开销过大或安全控制等。2. 定义代理模式是一种结构型设计模式,能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。3. 应用场景延迟初始化(虚拟代理):如果有一个偶尔使用的重量级...

初学 Java 设计模式(十二):实战享元模式 「高校选课系统优化」

2021-03-31
阅读 5 分钟
1.3k
一、享元模式介绍1. 解决的问题主要解决在有大量对象时,可能造成内存溢出的问题。2. 定义享元模式是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,能在有限的内存容量中载入更多对象。3. 应用场景在程序必须支持大量对象且没有足够的内存容量时使用享元模式。二、享...

初学 Java 设计模式(十一):实战外观模式 「类型转换器」

2021-03-28
阅读 6 分钟
1.9k
一、外观模式介绍1. 解决的问题主要解决访问复杂系统的内部子系统的复杂度问题,简化客户端与其子系统的接口。2. 定义外观模式是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。3. 应用场景需要一个指向复杂子系统的直接接口,且该接口的功能有限,可以使用外观模式。需要将子系统组织为多层结构...

初学 Java 设计模式(十):实战装饰器模式 「日志系统支持各类通知组合」

2021-03-21
阅读 6 分钟
1.4k
一、装饰器模式介绍1. 解决的问题主要解决动态地给一个对象添加一些额外的职责。2. 定义装饰器模式是一种结构型设计模式,允许将对象通过放入包含行为的特殊封装对象来为原对象绑定新的行为。3. 应用场景希望在无需修改代码的情况下即可使用对象,且希望在运行时能为对象增加额外的行为,可以使用装饰器模式。用继承来扩...

初学 Java 设计模式(九):实战组合模式 「决策树实现精准化运营」

2021-03-14
阅读 15 分钟
3.5k
一、组合模式介绍1. 解决的问题在树形结构的问题中,模糊了简单元素和复杂元素的概念,客户端可以像处理简单元素一样来处理复杂元素,从而使客户端和复杂元素的内部元素解耦。2. 定义组合模式是一种结构型设计模式,可以使用它将对象组合成树状结构,并能像使用独立对象一样使用它们。3. 应用场景需要实现树状对象结构,...

初学 Java 设计模式(八):实战桥接模式 「第三方登录实现」

2021-03-07
阅读 4 分钟
1.7k
简单来说,就是通过讲抽象部分和实现部分分离,把多种可匹配的使用进行组合。核心实现是在 A 类包含 B 类接口,通过构造函数实现 B 类的传递,这个 B 类就是设计的桥。

初学 Java 设计模式(七):实战适配器模式 「同步监控通知至工作群」

2021-02-28
阅读 5 分钟
1.7k
一、适配器模式介绍1. 解决的问题主要解决在系统中,将一些现存对象放入新环境中,而新环境要求的接口和现存对象不匹配的问题。2. 定义适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。3. 应用场景希望使用某个类,但其接口与其他代码不兼容时,可以使用适配器类。如果需要复用这样一些类,它们处...

初学 Java 设计模式(六):实战单例模式

2021-02-17
阅读 6 分钟
2.1k
保证一个类只有一个实例。 最常见的是控制某些共享资源 (例如数据库或文件) 的访问权限。运作方式是这样的: 如果创建了一个对象,同时过一会儿后决定再创建一个新对象,此时会获得之前已创建的对象, 而不是一个新对象。 注意, 普通构造函数无法实现上述行为,因为构造函数的设计决定了它必须总是返回一个新对象。

初学 Java 设计模式(五):实战原型模式 「英雄联盟齐天大圣-真假猴王」

2021-02-16
阅读 5 分钟
1.4k
主要解决的问题就是创建重复对象,这部分对象内容本身比较复杂,生成过程可能从库中或者RPC接口中获取数据的耗时较长,因此采用克隆的方式节省时间。

初学 Java 设计模式(四):实战建造者模式 「单人年夜饭套餐」

2021-02-15
阅读 6 分钟
1.3k
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

初学 Java 设计模式(三):实战抽象工厂方法模式 「QQ 厘米秀装扮」

2021-02-14
阅读 4 分钟
1.6k
一、抽象工厂方法模式介绍1. 解决的问题通过接口的选择,解决在系统产品存在多个产品族,而系统仅消费某一族的产品的问题。2. 定义抽象工厂模式是一个围绕超级工厂创建其他工厂的模式,即抽象工厂是一个中心工厂,创建其他工厂的模式。抽象工厂提供了一个接口,可用于创建每个系列产品的对象。只要代码通过该接口创建对...

初学 Java 设计模式(二):实战工厂方法模式 「文章、视频、直播内容输出生产场景」

2021-01-31
阅读 9 分钟
1.4k
简单来说就是为了提供代码的扩展性,屏蔽每一个功能类的具体实现逻辑,让外部仅知道调用即可。这也是去掉多个 if else 的方式,当然也存在一些缺点,如需要实现的类过多,如何维护,降低开发成本。但这些问题可以通过与其他设计模式结合使用,逐步降低影响。