设计模式之组合模式

定义 将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。如电脑中文件和文件夹的结构。 结构 Component,抽象构件,为叶子节点对象和组合对象声明公共...

SpringBoot自定义starter入门

前言 SpringBoot中的starter是一种重要的机制,遵循"约定优于配置"的理念,应用者只需要添加starter的maven依赖, SpringBoot就会自动扫描并加载相应的配置。为了更好的理解SpringBoot的原理,...

设计模式之模板方法模式

定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 例如我们去银行办理业务,要经过取号、排队、办理具体业务等过程,取号、排队对于每个客户都是一样的,...

设计模式之策略模式

定义 定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换,本模式使得算法可独立于使用它的客户而变化。 例如我们生活中出行可以选择火车,飞机,私家车等方式,每一种出行方式就可以看做一种策略。 结构 St...

设计模式之状态模式

定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 类似于我们商城下单,订单有各种状态,不同的状态下可以执行不同的操作。 结构 State,状态接口,用来封装与上下文的一个特定状态所...

设计模式之备忘录模式

定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 如游戏中的存档,各种编辑器中的后退、撤销功能。 结构 Originator,发起人...

设计模式之享元模式

定义 运用共享技术有效地支持大量细粒度的对象。如围棋中的黑白棋子,教室中的凳子和桌子,这些对象有很多相似的地方, 如果将其中相同的地方提取出来共享,就能节省大量的系统资源,这就是享元模式的适用场景。 结构 Fl...

Spring Plugin插件系统入门

前言 今天在学习swagger源码时,发现其中使用到了spring-plugin组件,github地址, 这个组件很小众,在其他框架中也使用不多,它被称为最小的插件系统。 简单使用 maven依赖 <depe...

设计模式之解释器模式

定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这里的文法就是语言的语法规则。 结构 AbstractExpression,抽象解释器角色,定义解释器的接口...

设计模式之装饰者模式

定义 动态地给一个对象添加一些额外的功能,就增加功能来说,装饰者模式比生成子类更为灵活。 如我们生活中的早餐煎饼,可以加鸡蛋,加香肠,加蔬菜,可以很灵活的组合。 结构 Component,抽象组件,定义为一个接...