![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 83
设计模式
栗子叶
这个作者很懒,什么都没留下…
展开
-
【设计模式】行为型设计模式之 备忘录模式(快照模式)
备忘录模式:也称为快照模式,在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态以便后续能将这个对象恢复成之前的状态。备忘录模式的两个要点存储副本以便后期恢复要在不违反封装原则的前提下恢复当需要实现撤销/重做功能时。当需要保存和恢复对象的内部状态,但又不想暴露这些状态的细节时。在某些性能非关键路径上,可以接受因保存状态而带来的资源消耗。备忘录模式在实现时,设计者需要权衡状态保存的频率和成本,以确保不会因为过度使用而导致资源紧张。原创 2024-06-10 00:11:44 · 789 阅读 · 0 评论 -
【设计模式】行为型设计模式之 迭代器模式
是行为设计模式之一,它提供了一种访问集合对象(如列表、数组或其他集合结构)中元素的方式,而不需要暴露集合的内部结构。迭代器模式定义了一个迭代器接口,该接口负责遍历集合中的元素,这样用户就可以通过迭代器来访问集合的元素,而无需了解集合的具体实现。一个完整的迭代器模式包含集合和迭代器两部分内容,集合又分为集合接口和实现类、迭代器分为迭代器实现类和接口。原创 2024-06-10 00:04:53 · 1052 阅读 · 0 评论 -
【设计模式】行为型设计模式之 状态模式,带你探究有限状态机FSM的三种实现方式
状态模式是一种行为设计模式,通过把状态的逻辑封装到独立的类中,允许对象在其内部状态改变时改变行为。核心组件包括状态接口、具体状态类和上下文类。与有限状态机(FSM)紧密相关,FSM由状态、事件和动作构成,通过事件触发状态转换及动作执行。状态模式不仅适用于简单的状态逻辑,也擅长管理复杂状态间的转换,替代冗长的if-else或查表法,提高了代码的清晰度与可维护性。例如,实现马里奥游戏角色状态变换,展示从基础状态到高级状态的变化及遇敌回退,清晰体现了状态模式的优势。原创 2024-06-09 01:15:19 · 979 阅读 · 0 评论 -
【设计模式】行为型设计模式之 职责链模式,探究过滤器、拦截器、Mybatis插件的底层原理
职责链模式是一种设计模式,它使请求处理与请求发送分离,允许多个处理对象有机会处理请求。该模式通过构建处理对象的链式结构,逐个传递请求直至被处理。变体中,链上每个对象都尝试处理请求而非仅第一个能处理的对象处理。例如,在Java实现中,抽象类Handler定义了处理请求的模板方法,并持有指向下一个处理者的引用。通过链表或数组等形式组织处理者,客户端构建职责链并触发处理流程。此模式在诸如框架过滤器、Netty的编解码器中广泛应用,增强了系统的灵活性和可扩展性。原创 2024-06-09 01:11:57 · 1389 阅读 · 0 评论 -
【设计模式】行为型设计模式之 策略模式学习实践
策略模式(Strategy),就是⼀个问题有多种解决⽅案,选择其中的⼀种使⽤,这种情况下我们使⽤策略模式来实现灵活地选择,也能够⽅便地增加新的解决⽅案。⽐如做数学题,⼀个问题的解法可能有多种;再⽐如商场的打折促销活动,打折⽅案也有很多种,有些商品是不参与折扣活动要按照原价销售,有些商品打8.5折,有些打6折,有些是返现5元等。原创 2024-06-09 01:06:20 · 1085 阅读 · 0 评论 -
【设计模式】行为型设计模式之 模板方法模式
模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中去实现;模板方法在不改变算法整体结构·的情况下,可以重新定义算法中的某些步骤。回调方法与模板方法的应用场景几乎一致,都是在一个大的算法框架中自由替换其中的某个步骤,起到代码复用和拓展的作用。回调基于组合关系,而模板方法基于继承实现2. 回调的组合关系更加灵活 1. Java 语言的单继承限制 2. 回调可以使用匿名类,Lambda 表达式来传递代码。但是模板方法必须定义子类 3. 模板方法不够灵活,如果有多个模板方法和其待原创 2024-06-09 01:04:25 · 450 阅读 · 0 评论 -
【设计模式】结构型设计模式之 享元模式
享元模式,”享元“ 就是被共享的单元。享元模式的意图就是复用对象节省内存,应用的前提是被共享的对象是不可变的对象。将对象设计成享元,保留一份实例供多处代码引用这样能减少内存中对象的数量,不允许修改是因为避免一出修改影响其他使用他的代码。应用享元模式前应该仔细测试是否真的在业务场景中能节省大量内存,否则可能适得其反。原创 2024-06-09 01:01:32 · 482 阅读 · 0 评论 -
【设计模式】结构型设计模式之 组合模式
这里的组合模式,与之前的设计模式中的""完全是两码事,这里的组合模式主要用来处理结构为树形的数据。组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树状结构来表示“部分-整体”的层次关系。此模式提供了一种方式,使得用户可以以统一的方式处理单个对象和对象组合,从而使得客户代码可以一致地使用它们,而无需关心对象是单独的还是组合的。原创 2024-06-09 00:59:38 · 373 阅读 · 0 评论 -
【设计模式】结构型设计模式之 门面模式
门面模式(Facade Pattern)是一种常用的设计模式,属于结构型模式的范畴。它为子系统中的一系列接口提供一个简化的统一接口,即一个外观(Facade),从而使子系统更加容易使用。门面模式并不修改子系统的功能,而是为用户提供了一个更高层次的接口,隐藏了子系统内部的复杂性,减少了客户代码与子系统之间的耦合度。原创 2024-06-09 00:58:27 · 387 阅读 · 0 评论 -
【设计模式】结构型设计模式之 桥接模式
如果车辆有一个类,然后其可以选装不同形式的轮毂 M 种、不同形式的颜色 N 种,如果每种具体的车辆类型都会产生一个子类,那么共有 M。此时,如果我们将轮毂和颜色都单独定义成一个类,在车辆类中使用组合来关联轮毂和颜色。那么只需要 M 种轮毂、N 种颜色便可以组合出 M。SL4J 框架有 3 个核心概念,也用到了桥接模式这三个属性可以独立变化,随意组合出自己想要的日志记录器。原创 2024-06-09 00:56:08 · 373 阅读 · 0 评论 -
【设计模式】结构型设计模式之 适配器模式
适配器模式(Adapter Pattern) 是一种结构型设计模式,它的核心目的是使接口不兼容的类能够协同工作。适配器模式通过将一个类的接口转换为客户希望的另一个接口,来解决两个已有接口之间不匹配的问题,从而增加它们之间的兼容性。这种模式在需要复用现有类,而又不想修改原有接口或者无法修改原有接口的情况下特别有用。原创 2024-06-09 00:52:47 · 657 阅读 · 0 评论 -
【设计模式】结构型设计模式之 从IO流设计思想来看装饰器模式
装饰器模式也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了**比继承更有弹性的替代方案**(扩展原有对象的功能),属于结构型模式。装饰器模式的核心是功能扩展,使用装饰器模式可以透明且动态地扩展类的功能。原创 2024-06-09 00:51:19 · 762 阅读 · 0 评论 -
【设计模式】结构型设计模式之 代理模式
代理模式常见应用,OOP和AOP的区别是什么!静态代理和动态代理有什么区别?JDK动态代理还比CGLIB动态代理性能差吗?来看看吧原创 2024-06-09 00:49:17 · 538 阅读 · 1 评论 -
【设计模式】创建型设计模式之 原型模式
什么是深拷贝、浅拷贝,如何快速拷贝一个hash表。来看看原型模式吧。原型模式主要用于创建重复的对象,而无需重新初始化他们。原创 2024-06-09 00:46:24 · 497 阅读 · 0 评论 -
【设计模式】创建型设计模式之 建造者模式
建造者模式,将一个复杂的对象的构建过程与表示分离,使得同样的构建过程可以构建不同的结果。原创 2024-06-09 00:43:51 · 1056 阅读 · 0 评论 -
【设计模式】创建型设计模式之 工厂模式
本篇博客深入浅出地剖析了工厂模式的三大类型:简单工厂模式、工厂方法模式、抽象工厂模式,及其在软件开发中的应用场景与优势。简单工厂模式通过集中创建对象的职责到一个类中,简化客户端代码并提供灵活性,但违背了开闭原则。工厂方法模式通过为每类产品提供独立的工厂类,实现了更好的扩展性与遵循开闭原则。抽象工厂模式则进一步抽象化,适用于生产多系列相关或相互依赖对象的情况,有效减少了大量工厂类的产生。原创 2024-06-09 00:41:56 · 1184 阅读 · 0 评论 -
【设计模式】创建型设计模式之 单例模式
本文深入探讨了单例设计模式,这是一种确保类在任何时刻都只有一个实例的设计模式,适用于配置管理或资源控制等场景。文章首先介绍了单例模式的基本概念和适用场景,随后详述了多种实现方式,包括饿汉式、懒汉式、双重检查锁定、静态内部类以及枚举实现法,每种方法各有优劣,如线程安全、延迟加载及性能考量。最后分析了单例模式可能带来的弊端,如隐藏依赖、扩展性受限及对测试的不利影响,帮助开发者在实际应用中权衡选择。原创 2024-06-09 00:35:18 · 717 阅读 · 0 评论 -
一看就懂的观察者模式,带你用观察者模式手写一个最简单的EventBus事件总线框架
带你理解什么是观察者模式、观察者模式有哪些应用场景。包含观察者模式的最简实现代码。同时参照Google的EventBus手写一个简单地事件总线框架原创 2022-11-29 15:54:35 · 319 阅读 · 0 评论 -
策略模式的介绍和案例对比(行为型)
策略模式(Strategy),就是⼀个问题有多种解决⽅案,选择其中的⼀种使⽤,这种情况下我们使⽤策略模式来实现灵活地选择,也能够⽅便地增加新的解决⽅案。⽐如做数学题,⼀个问题的解法可能有多种;再⽐如商场的打折促销活动,打折⽅案也有很多种,有些商品是不参与折扣活动要按照原价销售,有些商品打8.5折,有些打6折,有些是返现5元等。原创 2022-09-25 20:36:05 · 131 阅读 · 0 评论 -
UML类图和面向对象设计原则
uml全称:Unified Modeling Language 一种为系统的产品进行说明、可视化和文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。原创 2022-09-25 12:02:00 · 409 阅读 · 0 评论