![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 72
xiaoguangtouqiang
一枚小小程序员
展开
-
Jpa 复杂查询
有时候需要通过Jpa进行复杂的查询,做个记录汇总,后面以便于可以进行查阅;1.首先Repository需要继承接口JpaSpecificationExecutor<T>,这里的T是具体的entity实例;这样就可以使用该接口提供的这些方法,进行复杂查询;相比JPQL,其优势是类型安全,更加的面向对象可以看到这个接口基本是围绕着Specification接口来的;2.Sp...原创 2020-01-07 15:39:18 · 1045 阅读 · 0 评论 -
设计模式-享元模式
1.概念面向对象技术可以很好的解决一些灵活性问题,但是在很多情况下,需要有大量的对象,当对象的数量过多之后会占用大量的内存空间,导致性能低下,这时候可以考虑使用享元模式来解决;特别是针对一些不经常变化的对象,我们可以把这些对象放到一个池中,需要的时候就去取,而不是重新创建一个;有时候不可能所有的属性都是可以共享的,有一些外部的属性需要通过参数传进来;所以享元模式有一个概念叫外部状态和内部状...原创 2018-11-02 14:40:34 · 142 阅读 · 0 评论 -
设计模式-中介者模式
1.定义中介者模式将同类对象之间的交互封装起来,使得同类对象之间不需要互相作用,而是把这种调用的行为放在中介对象中去进行;好处是降低了对象之间的耦合,是一种行为类模式;为什么要使用中介者模式?一般来说,同事类之间的关系是复杂的,多个同事类之间相互关联,会呈现出一种网络结果,这种过度耦合的网络结构,不利于系统的复用。下面举个例子来说明下2.例子现在有个简单的场景:两个人之间可以互相聊...原创 2018-11-01 16:16:52 · 139 阅读 · 0 评论 -
设计模式-责任链模式
1.定义针对一个请求,多个对象都有机会处理该请求,具体要根据条件来判断;将这些对象练成一个链,并沿着链传递请求,直到有对象处理这个请求,请求不再往下传递;责任链模式是一种行为类模式;2.组成类图比较简单,基本就是一个抽象类,类中包含一个自己得引用指向下一个处理的对象;我们来看一段很常见的代码public void test(int i, Request request){ ...原创 2018-11-01 11:32:17 · 108 阅读 · 0 评论 -
设计模式-备忘录模式
备忘录模式用于各种需要备份的操作,比如编辑器的ctrl+z的功能,或者游戏数据的存档等场景;本文以编辑器为例子来简单说明下备忘录设计模式设计的几个部分;考虑到一个场景,现在使用编辑器写文章,我们需要保存文章的各种历史操作,以便可以及时的回滚回去;1.组成先看下备忘录模式的几个组成部分,引用别人的图1>Originator叫做原发器,可以理解为操作的对象,比如上面的文章对象...原创 2018-10-30 18:06:36 · 102 阅读 · 0 评论 -
设计模式-命令模式
在软件开发过程中,经常需要在一个对象中调用另外一个对象的方法去执行某种操作,但是调用方可能需要执行不同对象的方法;这时候可以考虑使用命令模式,来减少调用方和执行方的耦合,让调用方不用关注具体的执行方是谁,也不需要关注具体的实现;命令模式的主要特点就是通过引入command对象,使得命令的调用方和具体执行方解耦;1.组成结构1>Invoker命令的调用方,就是谁要来执行操作的,...原创 2018-10-31 13:07:34 · 208 阅读 · 0 评论 -
设计模式-访问者模式
1.概念 访问者模式是一种复杂的行为型设计模式,包含了访问者和被访问者,通常的情况是访问者需要对不同的被访问者做不同的操作,举个例子来说,医院的药单,通常访问者比如医生和会计都会访问药单,但是这两者对药单的操作是不同的,医生侧重于抓药,而会计则会根据药来计算费用;在软件开发过程中,有时候我们也需要去处理这种集合类的元素,对集合中不同的对象又有不同的访问者需要进行不同的访问处理方式,...原创 2018-10-25 19:01:13 · 280 阅读 · 0 评论 -
设计模式-迭代器模式
1.概念迭代器模式是一种行为类模式,提供了一种访问容器中对象的方法,又不暴露对象的内部细节;迭代器模式在Java中应用是比较多的,几乎所有的集合类都使用到了迭代器模式,比如List,Set,Map等;经常使用遍历结合的一段代码public static void print(Collection coll){ Iterator it = coll.iterator(); ...原创 2018-10-17 13:04:27 · 110 阅读 · 0 评论 -
设计模式-观察者模式
1.概念观察者模式是一种行为类模式,定义对象间的一种一对多的依赖关系,当一个对象状态发生变化,则所有依赖于它的对象都会得到通知并自动更新;有几个角色:1>Subject被观察者,可以是抽象类也可以是具体的类;持有一组观察者的列表,这里使用Vector而没有使用List的原因是因为Vector在多线程的情况下是线程安全的;另外还有三个方法,attach是添加观察者;detach...原创 2018-10-17 10:34:27 · 101 阅读 · 0 评论 -
设计模式-模板方法模式
1.概念定义一个类中算法的框架,实现部分算法,其他算法延迟到子类中,使得子类可以在不改变算法结构的基础上重定义算法中的特定步骤;模板方法经常用来搭建框架,比如架构师实现某些重要的功能,然后未实现的交给初级开发来完成;2.使用例子场景:一天,程序员A拿到一个任务需要给一个数组进行排序并打印出来;这个任务可以分解成两个部分,排序和打印,打印功能比较容易,所以A考虑把打印功能完成,之后排序功...转载 2018-10-16 17:27:27 · 111 阅读 · 0 评论 -
设计模式-桥接模式
1.概念桥接模式(Bridge)是把事物和具体的实现分离开来,使得两者可以独立的进行变化;使用的场景是当一个事物有多个维度,而且都可以自由的变化的时候,可以考虑使用桥接模式,降低类之间的耦合度,同时也可以减少类的数量;2.组成类图如下所示1>Implementor 定义接口interface Implementor { // 实现抽象部分需要的某些具体功...原创 2018-10-16 16:21:12 · 113 阅读 · 0 评论 -
设计模式-外观模式
1.定义外观模式为一组子系统的接口提供了一个一致的界面,定义了一个高层的接口,使得子系统更加易用;可以理解为定义了一个类,调用子系统或者很多类的功能来完成特定的功能,外观模式不涉及接口;2.角色1>外观角色客户端可以调用外观角色的方法,这个角色知道子系统的所有的功能,再正常情况下,外观角色将客户端的请求转发到对应子系统去行使对应的功能;2>子系统角色可以有一个或...原创 2018-10-16 12:07:54 · 102 阅读 · 0 评论 -
设计模式-代理模式
1.定义代理模式是java常用的设计模式,特征是代理类和委托类具有相同的接口,代理类主要负责为委托类预处理消息,过滤消息,以及事后的消息处理等;通常代理类会和一个委托类的对象关联,代理类不自己实现服务而是通过委托类对象实现服务;代理模式是Aop的基础;按照代理的创建时期,分成两种:1>.静态代理:程序员创建的,在程序运行前,代理类的.class文件就已经存在了;2>.动态代...原创 2018-10-16 10:46:42 · 113 阅读 · 0 评论 -
设计模式-策略模式
策略模式是比较常用的设计模式,在Spring中经常使用到,另外,在自己的开发过程中,有时候会遇到很多if/else不同的处理逻辑的时候,也可以使用策略模式来实现;策略模式是对算法的包装,将算法的实现和使用分隔开来,委派给不同的对象去处理,通常把一系列的算法包装到策略类中,作为一个抽象策略类的子类; 策略模式主要由一下几部分组成,这里引用下网上的图1>C...原创 2018-09-27 17:08:31 · 146 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式也是常用到的设计模式,算是一种补偿模式,用来在系统后期扩展修改时使用,在详细设计阶段不适合使用;会先简单介绍下适配器模式,以及它的几个部分,最后通过一个例子来简单演示下;1.定义 将一个类的接口转换为希望的另一个接口,适配器模式使得原来由于不兼容而不能一起工作的类可以一起工作;我的理解是,某个类原来没有某种功能,现在希望提供这种功能,那么会将原来的功能,做一个转换...原创 2018-09-27 12:58:59 · 109 阅读 · 0 评论 -
设计模式-装饰器模式
1.概念装饰器模式,通过名字来理解就是在原来的类上进行一些装饰,使得原来类的功能更强大,是继承的替代方案;在Java中,InputStream中使用到装饰者模式;下面简单了解下,最后简单说明下在InputStream中的使用;2.主要结构有几部分组成:1>Component:抽象组件,定义一组抽象接口,规定这个被装饰类有哪些功能;2>ConcreteComponent:...原创 2018-10-11 17:30:49 · 118 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式是一种比较常用的设计模式,做个简单的总结;文章会先介绍下基本的概念,以及组成部分,最后通过例子来说明具体的使用过程; 1.概念 建造者模式主要针对复杂的对象的构建过程,将一个复杂对象的构建和表示分离;按自己的理解就是最终生产的产品有共同的组成部分,但是具体的每个部分有很多变化,所以会抽象出一些共同的部分,然后定义不同的builder去具体的...原创 2018-09-26 14:16:03 · 239 阅读 · 0 评论