![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 75
霓乤
努力的码农
展开
-
设计模式--适配器模式
适配器模式引例简介基本介绍工作原理示例代码 引例 简介 基本介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。 工作原理 适配器模式:将一个类的接口转换成另一种接口.让 原本接口不兼容的类可以兼容。 从用户的角度看不到被适配者,是解耦的。 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。 用户收到反馈结果,感觉只是和目标接口交互。 示例 在实际业务原创 2021-10-18 21:52:01 · 162 阅读 · 0 评论 -
设计模式--建造者模式
建造者模式引例建造者模式介绍结构建造者模式改进引例总结 引例 建造者模式 介绍 结构 建造者模式改进引例 总结原创 2021-09-27 12:37:29 · 159 阅读 · 0 评论 -
设计模式--原型模式
原型模式1.概述2.介绍3.引例4.原始的设计5. 用原型模式改善5.1 示例:利用clone进行复制5.2 问题5.3 浅拷贝和深拷贝5.4 使用clone实现深拷贝(每个用到的类需要实现clone)5.5 通过对象序列化实现深拷贝6.总结 1.概述 原型模式主要解决的是创建重复对象的问题。而这部分对象内容本身比较复杂,因此获取相关对象数据耗时较长,所以采用复制的方式节省时间。 2.介绍 原型模式包含如下角色: 抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。 具体原型类:实现抽原创 2021-09-24 21:37:42 · 155 阅读 · 0 评论 -
设计模式--工厂模式(三种)
工厂模式概述简单工厂1.基本结构2.示例3.优缺点4.简单工厂+配置文件解除耦合工厂方法模式1.概念2.基本结构3.示例4.优缺点抽象工厂模式1.概念2.基本结构3.示例4.优缺点 概述 简单工厂 1.基本结构 2.示例 3.优缺点 4.简单工厂+配置文件解除耦合 工厂方法模式 1.概念 2.基本结构 3.示例 4.优缺点 抽象工厂模式 1.概念 2.基本结构 3.示例 4.优缺点 ...原创 2021-09-07 15:15:27 · 145 阅读 · 0 评论 -
设计模式--单例模式
单例模式1.简介2.分类:使用1.饿汉式(( 静态常量)2.饿汉式(静态代码块 )3.懒汉式(线程不安全)4. 懒汉式(线程安全,同步方法)5. 懒汉式(线程安全,同步代码块)6.双重检查7. 静态内部类8. 枚举 1.简介 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 单例模式主要解决的是一个全局使用的类,被频繁的创建于销毁,从而提升代码总体的性能。 比如:在实际中,数据库连接池不会反复创建,sprin原创 2021-09-04 22:15:07 · 65 阅读 · 0 评论 -
java设计模式-六大基本设计原则
六大基本设计原则设计模式的目的设计模式六大原则 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让 序 程序( 软件) ,具有更好: 代码重用性 (即:相同功能的代码,不用多次编写) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响) 使程序呈现 高内聚, 低耦 合的特性 设计模式六大原则原创 2021-08-17 20:06:07 · 93 阅读 · 0 评论 -
六大设计原则--迪米特法则 (lod)
迪米特法则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节 1.概述 一个对象应该对其他对象保持最少的了解。 类与类关系越密切,耦合度越大。 迪米特法则(Demeter Principle)又叫 最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息 迪米特法则还有个更简单的定义:只与直接的朋友通信。 直 接的朋友:每个对象都会与其他对象有耦合关系,只要两个原创 2021-08-17 19:52:58 · 218 阅读 · 0 评论 -
六大设计原则--开闭原则 (ocp)
开闭原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善 1.概述 开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。 当软件需要变化时,尽量 通过扩展软件实体的行为来实现变化,而 不是通过修改已有的代码来实现变化。 编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则 2.案例 2.1.描述 2.2.代码 //绘制图形 class原创 2021-08-17 19:46:02 · 129 阅读 · 0 评论 -
六大设计原则--里氏替换原则(lsp)
里氏替换原则OO 中的继承性的思考和说明1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善 OO 中的继承性的思考和说明 继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实 现的方法任意修改,就会对整个继承体系造成破坏。 继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵 入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承, 则当这个类需要修改时,必须考虑原创 2021-08-17 19:38:16 · 150 阅读 · 0 评论 -
六大设计原则--依赖倒置原则(dip)
依赖倒置原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节 1.概述 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置)的中心思想是面向接口编程 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类。 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他原创 2021-08-17 19:26:37 · 98 阅读 · 0 评论 -
六大设计原则--接口隔离原则(isp)
接口隔离原则1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节 1.概述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。 2.案例 2.1.描述 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D。 2.2.代码 nterface Interface1 { void operation1(); void operation2(); void operation3(); void operation原创 2021-08-17 19:18:02 · 72 阅读 · 0 评论 -
六大设计原则--单一职责原则(srp)
单一职责1.概述2.案例2.1.描述2.2.代码2.3.分析2.4改善3.注意事项和细节 1.概述 所谓的职责就是类变化的原因,也就就实际的业务需求。如果一个类有多于一个原因别改变,那么这个类的职责就有超过两个及以上的规则。而单一职责约定一个类有且仅有一个改变类的原因。在实际开发中,例如在service层,userService就只负责对用户进行操作,商品就交给goodsService处理。 2.案例 2.1.描述 视频网站用户分类 2.2.代码 public class VideoService原创 2021-08-17 17:09:11 · 116 阅读 · 0 评论 -
mybatis源码--缓存机制
mybatis缓存机制缓存概述mybatis缓存结构一级缓存概要一级缓存命中的条件一级缓存失效的情况查看源码中失效情况的位置一级缓存性能一级缓存执行的过程(源码)执行流程源码分析spring-mybatis整合后一级缓存失效的分析示例查看源码二级缓存概要二级缓存命中的条件二级缓存为什么必须提交后才能命中二级缓存的设计思想二级缓存的执行流程执行流程源码 缓存概述 MyBatis提供在执行过程中查询缓存,如果缓存中有数据,则直接从缓存中获取,没有则从数据库查询,用以减轻数据压力,提高系统性能。 MyBatis原创 2021-08-13 23:06:00 · 84 阅读 · 0 评论 -
java--动态代理
动态代理代理代理概念代理作用:代理分类:静态代理概念实现逻辑:示例定义一个卖优盘接口(规范行为)厂家类(实现这个行为)商家代理厂家(同样实现卖优盘这个行为)顾客购买优盘静态代理的缺点动态代理(jdk)概念优点AOP动态代理所涉及的类proxy类InvocationHandler接口Method 类动态代理示例使用过程:定义卖优盘行为的接口厂家定义代理中用到的InvocationHandler实现类测试缺点cglib代理概念 代理 代理概念 在开发中存在a类需要调用c类的方法,完成某一个功能,但是c禁止a原创 2021-08-09 17:25:44 · 365 阅读 · 0 评论