![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 86
程可爱
一入码场深似海,从此头发不复存
展开
-
小侃设计模式(廿二)-访问者模式
访问者模式(Visitor Pattern)指的是在类的内部结构不变的情况下,不同的访问者访问这个对象都会呈现出不同的处理方式。它的主要作用时将数据结构与数据操作分离,将不同的算法与其所作用的对象进行分离。本文将详述访问者模式的原理及其使用方式。原创 2023-01-19 15:36:02 · 1414 阅读 · 0 评论 -
小侃设计模式(廿一)-状态模式
状态模式(State Pattern)是行为型设计模式的一种,它主要用来解决对象存在多种状态转换时,需要对外输出不同的行为。状态模式与策略模式有一定相似,区别在于策略模式行为彼此独立,可以进行相互替换;状态模式将对象状态封装在不同对象中,不同状态显示不同行为,不同状态之间可能有触发条件和先后关系。状态模式相较于策略模式而言,客户端不需要关心当前对象的状态,而策略模式需要在客户端根据状态选择调用策略类。本文将详述状态模式的原理及使用。原创 2023-01-15 22:08:31 · 502 阅读 · 0 评论 -
小侃设计模式(二十)-迭代器模式
迭代器模式(Iterator Pattern)提供了一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。迭代器模式用于访问集合中的元素而不需要知道集合底层的数据形式。在JAVA语言中,迭代器模式已经成为其中不可缺少的一部分,主要的接口就是Iterator,所有关于集合元素(Collection集合类型、Set类型等)的访问都可通过该接口来实现。本文将详细解释迭代器的原理以及使用方式。原创 2023-01-03 23:14:37 · 436 阅读 · 0 评论 -
小侃设计模式(十九)-解释器模式
解释器模式(Interpreter Pattern)是一种使用想对较少的模式,主要使用在编译解释等场景,例如:编译器、规则引擎解释、正则表达式解析等,这些语言又被称为领域特定语言(Domain Specific Language,DSL)。在《大话设计模式》中,对解释器的定义为:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。原创 2022-12-30 15:28:21 · 676 阅读 · 2 评论 -
小侃设计模式(十八)-发布订阅模式
发布订阅模式又叫观察者模式(Observer Pattern),它是指对象之间一对多的依赖关系,每当那个特定对象改变状态时,所有依赖于它的对象都会得到通知并被自动更新,它是行为型模式的一种。观察者模式内部有一个“主题”对象和若干个“观察者”对象,“主题对象”和“观察者”对象是一对多的依赖关系,当“主题”的状态发生变化时,所有“观察者”都得到通知。本文将详述观察者模式的原理及使用方式。原创 2022-12-16 17:31:53 · 1780 阅读 · 0 评论 -
小侃设计模式(十七)-中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,这种模式提供了一个中介类,来封装一组对象之间的交互,它将对象之间的交互委派给中介对象交互,避免了对象之间的直接交互。中介者又叫调停模式,是迪米特法则的典型代表。本文将详述中介者模式的原理及使用,帮助大家更好地理解。原创 2022-12-13 22:10:45 · 320 阅读 · 0 评论 -
小侃设计模式(十六)-备忘录模式
备忘录模式(Memento Pattern)是一种行为型模式,它的主要思想是在不破坏封装性的前提下,捕获一个对象的内部状态,并将该状态保存在该对象之外,这样以后就可将该对象恢复到原先保存的状态。它是相对简单的一种设计模式,能够允许用户取消不确定或者错误的操作,能够恢复到之前的状态。本文将详述备忘录模式的原理及使用方式。原创 2022-12-07 14:20:20 · 724 阅读 · 0 评论 -
小侃设计模式(十五)-命令模式
命令模式(Command Pattern)是将一个请求封装为一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。它是行为型模式的一种,能够有效降低系统间的耦合性。本文将详述命令模式的设计原理及使用。命令模式是对命令的一个封装,它将发出命令的责任和执行命令的责任进行分开,委派给不同的对象。原创 2022-12-05 23:23:25 · 326 阅读 · 0 评论 -
小侃设计模式(十四)-职责链模式
责任链模式(Chain of Responsibility Pattern)是为请求创建了一个接收者对象的链,让请求沿着这条链进行传播,直到有对象处理它为止,它属于典型的行为型模式。这种方式降低了发送者和处理者之间的耦合关系,使多个对象都有机会处理请求。责任链模式的使用场景很多,例如Struts2中的拦截器,SpringMVC中的HandlerExecutionChain等。本文将分析责任链的原理及使用,帮助大家更好地理解。原创 2022-11-23 21:43:31 · 533 阅读 · 0 评论 -
小侃设计模式(十三)-策略模式
策略模式(Strategy Pattern)是一种比较简单的模式,它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式具有较强的实用性,当一个对象拥有很多行为,且这些行为大部分很类似,需要大量的if…else来进行区分,使用策略模式能够有效降低耦合,降低代码复杂度。本文将分析策略模式的原理及使用方式。原创 2022-11-22 23:40:57 · 296 阅读 · 0 评论 -
小侃设计模式(十二)-代理模式
代理模式是结构型设计模式的一种(23种设计模式),它是底层框架使用较多的一种设计模式(Spring、Mybatis等)。代理模式指的是在某些场景下,对象会找一个代理对象,来辅助自己完成一些工作,这些工作是对原对象行为的控制或增强。举个简单的例子:有一个明星类(Star),日常的主要工作是演戏和唱歌,而她需要一个经济人(StarManager)来帮她代理一些事情,比如演戏和唱歌前的预约、结束后的收费等等。...原创 2022-08-31 17:02:04 · 321 阅读 · 0 评论 -
小侃设计模式(十一)-享元模式
享元模式(Flyweight Pattern)也叫蝇量模式,它是运用共享技术有效地支持大量细粒度的对象,解决重复对象浪费内存的问题。它常用于系统底层的开发,解决系统的性能问题。比如数据库连接池,这里面都是已经创建好的连接对象,需要时直接拿来使用,避免重复创建。享元模式最经典的使用场景就是池技术了,String常量池、数据库连接池等、缓冲池等都是享元模式的使用。本文将介绍享元模式的原理及使用方式。原创 2022-11-14 21:12:46 · 766 阅读 · 1 评论 -
小侃设计模式(十)-外观模式
外观模式(Facade Pattern)为子系统中的接口提供了一个统一接口,用来访问子系统中的一组接口,这个模式定义了一个高层接口,该接口使得客户端调用系统更加地方便。**外观模式主要通过定义一个接口,屏蔽内部子系统的细节,使得调用端只和这个接口发生调用,而无须关系系统的内部细节**。外观模式是结构型模式的一种,本文将分析外观模式的原理及使用方式。原创 2022-11-13 16:15:05 · 338 阅读 · 0 评论 -
小侃设计模式(九)-组合模式
组合模式(Composite Pattern)又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层析关系,使用户对单个对象和组合对象具有一致的访问性,是结构型设计模式的一种。本文将分析组合模式的原理及使用方式。原创 2022-11-13 14:26:42 · 691 阅读 · 0 评论 -
小侃设计模式(八)-装饰者模式
装饰者模式是一种结构性设计模式,它能够动态地将新功能附加到对象上,却又不改变对象,在对象功能扩展方面,比继承更富有弹性,且符合开闭原则。这种模式创建了一个类,用来包装原有的类,在保证原来类的功能前提下,增加了额外的功能。本文将分析装饰者模式的概念及使用。原创 2022-11-12 14:13:39 · 976 阅读 · 0 评论 -
小侃设计模式(七)-桥接模式
桥接模式(Bridge Pattern)是用于将抽象化与实现化进行分离,使两个层次可以独立改变。它是一种结构性设计模式,通过使用封装、聚合及继承等行为让不同得类承担不同得职责。它的主要特点是将抽象(Abstration)与行为实现(Implementation)分离开来,从而保持各部分得独立性以及应该它们的功能扩展。桥接模式的使用难度相对高一点,需要对场景有较高的抽象和理解。原创 2022-11-10 15:59:48 · 256 阅读 · 0 评论 -
小侃设计模式(六)-适配器模式
适配器(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,别名又叫包装器。它是结构型模式的一种,主要分为类适配器模式、对象适配器模式、接口适配器模式。本文将讲述适配器模式的基本原理及使用方式。原创 2022-11-09 15:04:29 · 390 阅读 · 0 评论 -
小侃设计模式(五)-建造者模式与模板方法模式
模板方法模式(Template Method Pattern),又叫模板模式(TemplatePattern),在一个抽象类公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,调用以抽象类中定义的方式进行。简而言之,模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重新定义该算法的某些特定步骤。原创 2022-11-07 17:30:44 · 673 阅读 · 0 评论 -
小侃设计模式(四)-原型模式
原型模式(Prototype Pattern)适用于创建重复的对象,同时又能保证性能,它提供了一种创建对象的最佳方式。JAVA中原型模式通you过实现一个原型接口,该接口用于创建对象的克隆,当创建对象的代价比较大时,采用这种模式能够有效提升系统性能。它是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节,本文主要讲述JAVA中采用浅拷贝和深拷贝方式来实现原型模式。原创 2022-11-03 16:51:49 · 292 阅读 · 0 评论 -
小侃设计模式(三)-工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂,该超级工厂又称为其它工厂的工厂。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。抽象工厂模式的本质是抽象顶层接口(负责相关工厂的创建),工厂负责生产产品所需要的所有成分,当需要制定成分,调用指定工厂类生产,最后进行组合,形成完整的产品。抽象工厂的使用场景在于:系统的产品有多个的产品族, 而系统只消费其中某一族的产品。原创 2022-10-30 15:20:14 · 339 阅读 · 0 评论 -
小侃设计模式(二)-单例模式
设计模式在粒度和抽象层次上各不相同,因此从不同的角度,分类形式也不同,目前存在两种较为经典的划分方式,即根据模式作用的范围、模式的目的来划分。根据模式主要是用于类还是用于对象,可将其划分为类模式和对象模式。类模式用于处理类与子类之间的关系,这些关系通过继承建立,体现了静态性。对象模式用于处理对象之间的关系,在运行时刻可以发生变化,体现了动态性。在某种程度上来说,继承机制几乎被所有模式使用,大多数模式都属于对象模式,小部分属于类模式。根据模式目的可将模式分为创建型模式、结构型模式和行为型模式。原创 2022-10-28 17:04:36 · 446 阅读 · 0 评论 -
小侃设计模式(一)-设计模式七大原则
设计模式(Design Pattern)是软件设计领域的一棵长青树,它是一套被反复使用、多人知晓、经过分类编目的、优秀代码设计经验的总结。使用设计模式是为了设计出易理解、可复用、可靠的代码,增强程序的可复用性。设计模式由Erich Gamma等人从建筑领域引入软件设计领域,成为了软件开发的指导思想,目前已成为高级软件工程师不可或缺的知识。本文将分系列讲述设计模式的原理以及使用场景,来帮助大家更好地理解和使用设计。第一系列主要讲述设计模式的七大设计原则(也有说六大设计原则,本文将合成复用原则算入)。原创 2022-10-28 11:05:30 · 629 阅读 · 0 评论