
设计模式精讲
文章平均质量分 97
设计模式精讲
道友老李
提供工业机器视觉解决方案(涵盖光源、相机、镜头、结构、视觉技术等)和自研接近开关传感器(衰减系数1)产品,联系方式:18271933684(同vx)。
展开
-
【设计模式精讲】开源实战之剖析MyBatis框架:MyBatis中的设计模式之装饰模式、迭代器模式及总结
上面给大家讲解的就是Spring和MyBatis框架中所使用到的设计模式. 要再次强调的是, 对于同学们来说不需要去记忆哪个类用到了哪个模式, 死记硬背是没有意义的,同学们最好是下载一些优秀框架的源码,比如Spring或者MyBatis,然后抽出时间好好的阅读一下源码,锻炼自己阅读理解源码的能力.除此之外同学们应该也有发现,其实框架对很多设计模式的实 现,都并非标准的代码实现,都做了比较多的自我改进。实际上,这就是所谓的灵活应用, 只借鉴不照搬, 根据具体问题针对性地去解决。原创 2025-03-03 05:00:00 · 17221 阅读 · 14 评论 -
【设计模式精讲】开源实战之剖析MyBatis框架:MyBatis中的设计模式之组合模式、模板方法模式、适配器模式
模板方法中的算法可以理解为广义上的业务逻辑,并不是特指某一个实际的算法.定义中所说的算法的框架就是模板, 包含算法框架的方法就是模板方法.模板类定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在Mybatis中,sqlSession的SQL执行,都是委托给Executor实现的,Executor包含以下结构:原创 2025-03-02 05:00:00 · 15456 阅读 · 11 评论 -
【设计模式精讲】开源实战之剖析MyBatis框架:MyBatis中的设计模式之工厂模式、单例模式、代理模式
构造函数是private修饰,具有一个static的局部instance变量和一个获取instance变量的方法,在获取实例的方法中,先判断是否为空如果是的话就先创建,然后返回构造好的对象。单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。代理模式可以认为是Mybatis的核心使用的模式,正是由于这个模式,我们只需要编写。使用的是工厂模式,该工厂没有那么复杂的逻辑,是一个简单工厂模式。原创 2025-03-02 05:00:00 · 16360 阅读 · 12 评论 -
【设计模式精讲】开源实战之剖析MyBatis框架:MyBatis中的设计模式之Builder模式
因为 MyBatis 依赖 JDBC 驱动,所以,在项目中使用 MyBatis,除了需要引入 MyBatis 框 架本身(mybatis.jar)之外,还需要引入 JDBC 驱动(比如,访问 MySQL 的 JDBC 驱动 实现类库 mysql-connector-java.jar)。ORM 框架主要是根据类和数据库表之间的映射关系,帮助程序员自动实现对象与数据库中数据之间的互相转化。ORM 负责将程序中的对象 存储到数据库中、将数据库中的数据转化为程序中的对象。原创 2025-03-01 05:00:00 · 16544 阅读 · 13 评论 -
【设计模式精讲】开源实战之剖析Spring框架:结合设计模式自定义SpringIOC
BeanFactory作为最顶层的一个接口,定义了IoC容器的基本功能规范从类图中我们可以发现最终的默认实现类是DefaultListableBeanFactory,它实现了所有的接口。那么为何要定义这么多层次的接口呢?每个接口都有它的使用场合,主要是为了区分在Spring内部操作过程中对象的传递和转化,对对象的数据访问所做的限制。例如,ListableBeanFactory接口表示这些Bean可列表化。原创 2025-03-01 05:00:00 · 16218 阅读 · 13 评论 -
【设计模式精讲】开源实战之剖析Spring框架:Spring中观察者模式的应用
在方法体中,可以通过不同对Event类的判断来进行相应的处理.当事件触发时所有的监听器都会收到消息,如果你需要对监听器的接收顺序有要求,可是实现该接口的一个实现SmartApplicationListener,通过这个接口可以指定监听器接收事件的顺序.事件机制的实现需要三个部分,事件源,事件,事件监听器,在上面介绍的ApplicationEvent就相当于事件,ApplicationListener相当于事件监听器,这里的事件源说的就是ApplicationEventPublisher.原创 2025-02-28 05:00:00 · 15389 阅读 · 11 评论 -
【设计模式精讲】开源实战之剖析Spring框架:Spring中工厂模式的应用
FactoryBean表现的是一个工厂的职责,如果一个BeanA 是实现FactoryBean接口,那么A就是变成了一个工厂,根据A的名称获取到的实际上是工厂调用getObject()方法返回的对象,而不是对象本身,如果想获取工厂对象本身,需要在名称前面加上 '&'符号。BeanFactory,以Factory结尾,表示它是一个工厂(接口), 它负责生产和管理bean的一个工厂。在Spring中,BeanFactory是工厂的顶层接口,也是IOC容器的核心接口,因此BeanFactory中定义了。原创 2025-02-28 05:00:00 · 16135 阅读 · 16 评论 -
【设计模式精讲】行为型模式之中介者模式
提到中介模式,有一个比较经典的例子就是航空管制。为了让飞机在飞行的时候互不干扰,每架飞机都需要知道其他飞机每时每刻的位置,这就需要时刻跟其他飞机通信。飞机通信形成的通信网络就会无比复杂。这个时候,我们通过引 入“塔台”这样一个中介,让每架飞机只跟塔台来通信,发送自己的位置给塔台,由塔台来 负责每架飞机的航线调度。这样就大大简化了通信网络。原创 2025-02-27 05:00:00 · 15614 阅读 · 11 评论 -
【设计模式精讲】行为型模式之命令模式、解释器模式
命令模式(command pattern)的定义: 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不 同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等 (附加控制)功能。命令模式的核心是将指令信息封装成一个对象,并将此对象作为参数发送给接收方去执行,达到使命令的请求与执行方解耦,双方只通过传递各种命令对象来完成任务.在实际的开发中,如果你用到的编程语言并不支持用函数作为参数来传递,那么就可以借助命令模式将函数封装为对象来使用。原创 2025-02-27 05:00:00 · 16271 阅读 · 14 评论 -
【设计模式精讲】行为型模式之备忘录模式
备忘录模式提供了一种对象状态的撤销实现机制,当系统中某一个对象需要恢复到某一历史状态时可以使用备忘录模式进行设计.备忘录模式(memento pattern)定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.备忘录模式的主要角色如下:下面我们再来看看 UML 对应的代码实现。首先,我们创建原始对象 Originator,对象中有四个属性,分别是 state 用于显示当前对象状态,id原创 2025-02-26 05:00:00 · 15856 阅读 · 10 评论 -
【设计模式精讲】行为型模式之访问者模式
访问者模式在实际开发中使用的非常少,因为它比较难以实现并且应用该模式肯能会导致代码的可读性变差,可维护性变差,在没有特别必要的情况下,不建议使用访问者模式.访问者模式(Visitor Pattern) 的原始定义是:允许在运行时将一个或多个操作应用于一组对象,将操作与对象结构分离。这个定义会比较抽象,但是我们依然能看出两个关键点:一个是: 运行时使用一组对象的一个或多个操作,比如,对不同类型的文件(.pdf、.xml、.properties)进行扫描;原创 2025-02-26 05:00:00 · 16059 阅读 · 19 评论 -
【设计模式精讲】行为型模式之迭代器模式
迭代器模式是我们学习一个设计时很少用到的、但编码实现时却经常使用到的行为型设计模式。在绝大多数编程语言中,迭代器已经成为一个基础的类库,直接用来遍历集合对象。在平时开发中,我们更多的是直接使用它,很少会从零去实现一个迭代器。迭代器模式(Iterator pattern)又叫游标(Cursor)模式,它的原始定义是:迭代器提供一种对容器对象中的各个元素进行访问的方法,而又不需要暴露该对象的内部细节。原创 2025-02-25 05:00:00 · 15728 阅读 · 12 评论 -
【设计模式精讲】行为型模式之状态模式
自然界很多事物都有多种状态,而且不同状态下会具有不同的行为,这些状态在特定条件下还会发生相互转换,比如水在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同状态下也将具有不同的行为.状态模式(state pattern)的定义: 允许一个对象在其内部状态改变时改变它的行为. 对象看起来似乎修改了它的类.状态模式。原创 2025-02-25 05:00:00 · 16157 阅读 · 16 评论 -
【设计模式精讲】行为型模式之职责链模式
职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求.将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止.在职责链模式中,多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请 求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再 传递给 C 处理器,以此类推,形成一个链条。原创 2025-02-24 05:00:00 · 16406 阅读 · 10 评论 -
【设计模式精讲】行为型模式之策略模式
策略模式(strategy pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。其实我们在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等。原创 2025-02-24 05:00:00 · 16689 阅读 · 17 评论 -
【设计模式精讲】行为型模式之模板方法模式
模板方法模式(template method pattern)原始定义是:在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法中的算法可以理解为广义上的业务逻辑,并不是特指某一个实际的算法.定义中所说的算法的框架就是模板, 包含算法框架的方法就是模板方法.原创 2025-02-23 05:00:00 · 15866 阅读 · 13 评论 -
【设计模式精讲】行为型模式之观察者模式
观察者模式的应用场景非常广泛,小到代码层面的解耦,大到架构层面的系统解耦,再或者 一些产品的设计思路,都有这种模式的影子.现在我们常说的基于事件驱动的架构,其实也是观察者模式的一种最佳实践。当我们观察某一个对象时,对象传递出的每一个行为都被看成是一个事件,观察者通过处理每一个事件来完成自身的操作处理。生活中也有许多观察者模式的应用,比如 汽车与红绿灯的关系,‘红灯停,绿灯行’,在这个过程中交通信号灯是汽车的观察目标,而汽车是观察者.原创 2025-02-23 05:00:00 · 16072 阅读 · 15 评论 -
【设计模式精讲】结构型模式之享元模式
享元模式 (flyweight pattern) 的原始定义是:摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,从而让我们能在有限的内存容量中载入更多对象。从这个定义中你可以发现,享元模式要解决的核心问题就是节约内存空间,使用的办法是找出相似对象之间的共有特征,然后复用这些特征。所谓“享元”,顾名思义就是被共享的单元。比如: 一个文本字符串中存在很多重复的字符,如果每一个字符都用一个单独的对象来表示,将会占用较多的内存空间,我们可以使用享元模式解决这一类问题.原创 2025-02-22 05:00:00 · 15974 阅读 · 12 评论 -
【设计模式精讲】结构型模式之组合模式
组合模式(Composite Pattern) 的定义是:将对象组合成树形结构以表示整个部分的层次结构.组合模式可以让用户统一对待单个对象和对象的组合.比如: windows操作系统中的目录结构,其实就是树形目录结构,通过tree命令实现树形结构展示.在上图中包含了文件夹和文件两类不同元素,其中在文件夹中可以包含文件,还可以继续包含子文件夹.子文件夹中可以放入文件,也可以放入子文件夹. 文件夹形成了一种容器结构(树形结构),递归结构.原创 2025-02-22 05:00:00 · 16021 阅读 · 12 评论 -
【设计模式精讲】结构型模式之外观模式
外观模式( Facade Pattern),也叫门面模式, 外观模式的原始定义是:为子系统中的一组接口提供统一的接口。它定义了一个更高级别的接口,使子系统更易于使用。外观模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。门面模式有点类似之前讲到的迪米特法则(最少知识原则)和接口隔离原则:两个有交互的系统,只暴露有限的必要的接口。原创 2025-02-21 05:00:00 · 16572 阅读 · 44 评论 -
【设计模式精讲】结构型模式之适配器模式
适配器模式(adapter pattern )的原始定义是:将类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5v的电压),读卡器等,其实就是使用到了适配器模式。原创 2025-02-21 05:00:00 · 17429 阅读 · 68 评论 -
【设计模式精讲】结构型模式之装饰器模式
装饰模式(decorator pattern) 的原始定义是:动态的给一个对象添加一些额外的职责. 就扩展功能而言,装饰器模式提供了一种比使用子类更加灵活的替代方案.假设现在有有一块蛋糕,如果只有涂上奶油那这个蛋糕就是普通的奶油蛋糕, 这时如果我们添加上一些蓝莓,那这个蛋糕就是蓝莓蛋糕.如果我们再拿一块黑巧克力 然后写上姓名、插上代表年龄的蜡烛, 这就是变成了一块生日蛋糕。原创 2025-02-20 05:00:00 · 15173 阅读 · 11 评论 -
【设计模式精讲】结构型模式之桥接模式
桥接模式(bridge pattern) 的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,使得系统更加灵活,并易于扩展,有效的控制了系统中类的个数 (避免了继承层次的指数级爆炸).分离抽象接口及其实现部分.桥接模式使用"对象间的关联关系"解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化.原创 2025-02-20 05:00:00 · 15911 阅读 · 17 评论 -
【设计模式精讲】结构型模式之代理模式(静态代理、JDK动态代理、cglib动态代理)
在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式.代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许将请求提交给对象前后进行一些处理。现实生活中的代理:海外代购软件开发中的代理。原创 2025-02-19 05:00:00 · 15763 阅读 · 11 评论 -
【设计模式精讲】创建型模式之原型模式(深克隆、浅克隆)
定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领域被称为原型模式.孙悟空就是原型对象.原型模式主要解决的问题。原创 2025-02-19 05:00:00 · 16813 阅读 · 15 评论 -
【设计模式精讲】创建型模式之抽象工厂模式、建造者模式
抽象工厂模式比工厂方法模式的抽象程度更高. 在工厂方法模式中每一个具体工厂只需要生产一种具体产品,但是在抽象工厂模式中一个具体工厂可以生产一组相关的具体产品,这样一组产品被称为产品族.产品族中的每一个产品都分属于某一个产品继承等级结构.1) 产品等级结构与产品族产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。产品族。原创 2025-02-18 05:00:00 · 15617 阅读 · 10 评论 -
【设计模式精讲】创建型模式之工厂方法模式(简单工厂、工厂方法)
简单工厂不是一种设计模式,反而比较像是一种编程习惯。简单工厂模式又叫做静态工厂方法模式(static Factory Method pattern),它是通过使用静态方法接收不同的参数来返回不同的实例对象. 定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。(1)需要创建的对象较少。(2)客户端不关心对象的创建过程。封装了创建对象的过程,可以通过参数直接获取对象。原创 2025-02-18 05:00:00 · 16209 阅读 · 12 评论 -
【设计模式精讲】创建型模式之单例模式(饿汉式、懒汉式、双重校验、静态内部类、枚举)
1 ) 定义单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。单例模式也比较好理解,比如一个人一生当中只能有一个真实的身份证号,一个国家只有一个政府,类似的场景都是属于单例模式。2 ) 使用单例模式要做的两件事保证一个类只有一个实例为该实例提供一个全局访问节点3 ) 单例模式结构1 ) 单例的定义单例设计模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。原创 2025-02-17 05:00:00 · 16388 阅读 · 39 评论 -
【设计模式精讲】六大设计原则 (SOLID)
古人云: 有道无术,术可求.有术无道,止于术.而设计模式通常需要遵循一些设计原则,在设计原则的基础之上衍生出了各种各样的设计模式。设计原则是设计要求,设计模式是设计方案,使用设计模式的代码则是具体的实现。设计模式中主要有六大设计原则,简称为SOLID ,是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的),六大设计原则分别如下:1、单一职责原则(Single Responsibitity Principle)2、开放封闭原则(Open Close Principle)。原创 2025-02-17 05:00:00 · 16363 阅读 · 57 评论 -
【设计模式精讲】设计模式概述、UML图
课程大纲**设计模式(Design pattern)**是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计。大部分设计模式要解决的都是代码的可重用性、可扩展性问题如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。原创 2025-02-16 05:00:00 · 15499 阅读 · 11 评论