模版方法模式 1 概念1 定义定义一个算法的骨架,允许子类为一个或者多个步骤提供实现。 使子类在不改变算法结构的情况下,重新定义算法的某些步骤 类型:行为型 2 应用场景 一次性实现一个算法不变的部分,并将可变的行为留给子类实现 将各类中公共的行为抽取出来到一个公共的父类中,避免代码重复 3 优缺点优点: 提高复用性 提高扩展性 符合开闭原则 缺点: 类数目增加 增加系统复杂度 继承自身缺点,如果父 2023-10-04 设计模式
桥接模式 1 概念1 定义桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 类型:结构型 桥我们大家都熟悉,顾名思义就是用来将河的两岸联系起来的。而此处的桥是用来将两个独立的结构联系起来,而这两个被联系起来的结构可以独立的变化。 2 应用场景 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。(如中国工 2023-10-04 设计模式
组合模式 1 概念1 定义将对象组合成树形结构以表示“部分——整体”的层次结构 组合模式使客户端对单个对象和组合对象保持一致的处理方式 类型:结构型 2 适用场景 希望客户端可以忽略组合对象和单个对象之前的差异 处理树形结构时 3 优缺点优点 让客户端忽略了层次的差异,方便对整个层次进行控制。简化客户端代码 符合开闭原则 缺点 使设计变得抽象 2 代码实现场景:打印课程目录和课程的层次关系。课程的 2023-10-04 设计模式
享元模式 1 概念1. 定义“享”就表示共享,“元”表示对象。如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用都创建新的对象。目的是减少对象创建,减少内存占用,提高系统性能。 类型:结构型 比如:去图书馆借书,如果书架上有这本书直接拿走,到借阅机上借阅就好了,如果没有,可以到图书管理处去拿一本新书。对于整个图书馆来说,书其实就是共享的。对于我们借书的流程和图书共享的方式 2023-10-04 设计模式
适配器模式 1 概念1 定义将一个类的接口转换成客户期望的另一个接口。使得原本不兼容的类,可以一起工作 类型:结构型 分类: 对象适配器:使用组合 类适配器:使用类继承 2 适用场景 已经存在的类,他的方法和需求不匹配时(方法的结果相同或相似) 不是软件设计阶段考虑的设计模式,是随着软件的维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案 3 优缺点优点: 提高类的透明性和复用,现有的类 2023-10-03 设计模式
装饰器模式 1. 概念1. 定义在不改变原有对象的基础上,将功能附加到对象上 提供了比继承,更有弹性的替代方案(扩展原有对象功能) 类型:结构型 2 适用场景 扩展一个类的功能,或者给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以再动态撤销 3 优缺点优点: 继承的有力补充,比继承灵活,不改变原有对象的情况下,给一个对象添加功能 通过使用不同的装饰类以及这些装饰类的排列组合,可以实现不同 2023-10-03 设计模式
外观模式 1 概念1 定义外观模式(Facade Pattern):又叫门面模式,引入一个外观角色来简化调用者与各个子系统之间的交互,向客户端提供了一个统一的接口,用来访问子系统中的一群接口。 类型: 结构型 2 适用场景 当调用者需要调用多个子系统来完成自己的逻辑 3 优缺点优点: 给各个子系统提供统一的入口,无需深入了解子系统,调用者使用起来很简单 把各个子系统和调用者解耦,扩展性会更好 更好的划分 2023-10-03 设计模式
docker+jenkins实现SpringBoot项目自动化部署 1 背景当前有一个微服务项目,共包含4个常用的微服务子项目,原始项目升级方式为: 修改application.yml文件,profile为product 在自己的电脑上手动利用maven打包,分为clean, package 分别进入4个项目的target目录下,将打好的jar包拷贝出来。 将本机拷贝出来的4个jar包上传到跳板机上 将上传到跳班机上的4个jar包拷贝出来,传到客户服务器上的指定 2023-10-03 jenkins
常用23种设计模式 1 概念1 定义设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 优点 重用代码 让代码更容易被他人理解 保证代码可靠性 2 六大原则 开闭原则:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。 里氏代换原则:任何基类可以出现的地方,子类一定可以出现。 依赖倒转原则:针对接口编程,依赖于抽象而不依赖于具体。 接口隔离原 2023-10-03 设计模式
原型模式 1 概念1 定义原型模式(Prototype)是一种创建型设计模式,它通过克隆现有的对象来创建新的对象。部分场景下,性能要优于new来创建对象 2 应用场景 类初始化消耗比较多的资源 new一个对象需要很繁琐的过程(数据准备,访问权限等) 构造函数比较复杂 循环体中产生大量对象。(避免重复执行构造函数的操作,从而提高性能和效率) 3 优缺点优点: 不需要调用构造函数,比直接new一个对象性能高 2023-10-03 设计模式