- 博客(21)
- 资源 (86)
- 问答 (8)
- 收藏
- 关注
原创 命令模式
命令模式:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用:在某些场合,比如要对行为进...
2018-11-30 23:07:24 168
原创 桥接模式
桥接模式:是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。应用实例: 1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化...
2018-11-29 23:59:27 270
原创 组合模式
组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。透明方式:就是在component中声明所有用来管理子对象的方法,其中包括add,remove等,这样实现的Component接口的所有子类都具有add和remove,这样的好处是叶子节点和枝节点对于外界没有区别,他们具有完全一致的接口行为。但是问题也很突出,叶子节点不具有add...
2018-11-28 22:28:33 1113
原创 备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原来保存的状态。应用实例: 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri + z。 4、IE 中的后退。 4、数据库的事务管理。实例UML图:代码实现:/** * @author Shuyu.Wang * @package:com....
2018-11-28 13:18:14 159
原创 适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,适配器模式让原来由于接口不兼容而不能一起工作的那些类可以一起工作。 使用场景,系统的数据和行为都正确,但接口不符合,我们应该考虑用适配器类,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但是接口与复用 环境要求不一致的情况。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"...
2018-11-25 23:38:23 135
原创 状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是的当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。好处:消除庞大的条件分支语句,将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个...
2018-11-25 22:27:20 132
原创 迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素;为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离...
2018-11-22 23:19:04 150
原创 单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问改实例的方法;实现:代码实现:懒汉试,线程不安全/** * @author Shuyu.Wang * @package:...
2018-11-22 22:20:48 117
原创 观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)...
2018-11-20 23:43:06 128
原创 建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。Builder:是为创建一个product对象...
2018-11-19 23:48:35 94
原创 外观模式
外观模式:为子系统中的一组接口提供一个一直的界面,此模式定义一个高层接口,这个接口使得这个子系统更加容易使用。什么时候使用:首先,在设计初期阶段,应该有意识的将不同的两个层分离,降低耦合性;其次,子系统往往会变得越来越复杂,增加外观Facede可以提供一个简单的接口,减少他们之间的依赖。第三,维护一个遗留的大型系统是,可能这个系统已经难以维护和扩展了,但是新的开发需求还要依赖于它,此时使用外观...
2018-11-18 23:13:07 116
原创 模板模式
模板模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板模式可以使得子类可以不改变一个算法的结构就可以重新定义改算法的某些特定的步骤。当我们要完成在某一细节层次一致的一个过程或一系列步骤,单其个别步骤在更详细的层次上的实现可能不同时,我们通过开率用模板方法模式来处理。 模板模式是通过把不变行为搬到父类,去除子类中的重复代码来提现他的优势。模板模式提供了一个很好的代码复用平台...
2018-11-17 23:24:29 135
原创 原型模式
原型模式:用原型实例指定创建指定对象的种类,并且通过复制这些原型创建新的对象,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。注意:如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但是不复制引用的对象,因此,原始对象及其复本引用同一对象。潜复制:被复制对象的所有变量都含有原来的对象相同的值...
2018-11-17 00:01:38 114
原创 工厂模式
简单工厂模式最大的有点在于工厂类里包含了必要的逻辑判断条件,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是这违背了开放-封闭原则。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。...
2018-11-14 00:23:26 820
原创 代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 代理分类: 1:远程代理,就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。 2:虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。这样可以达到性能优化的目的,比如你打开一个很大的HTML网页,里面有很多文字和图片,但是你可以很快的...
2018-11-12 22:42:59 843
原创 装饰器模式
装饰器模式是为已有的功能动态添加更多功能的一种方式。他把每个要装饰的功能放在单独的类中,并让这个类包装他要装饰的对象。因此,当需要执行特殊行为时,客户代码就可以根据需要有选择的、按顺序的使用装饰功能包装对象了。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着...
2018-11-09 23:40:39 2264
原创 策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if......
2018-11-08 17:51:56 2007
原创 java设计模式教程
使用设计模式能够增加系统的健壮性,易修改性和可扩展性,当你进行开发的软件规模比较大的时候,良好的设计模式会给编程带来便利,让系统更加稳定,这些在自己编写小程序的时候是体现不出来的。现在大多数框架都使用了很多设计模式,正是因为有了这些设计模式,才能让程序更好的工作,例如烟水晶框架的单例模式,struts的mvc模式,java类库中iterator的迭代器模式等等,都是设计模式良好的应用。自己在写代码...
2018-11-07 21:26:54 2481
原创 简单工厂模式
从今天开始,我们来学习java的设计模式;简单工厂模式又称静态工厂模式,她不属于23种模式之一,我们从它开始一步一步开始我们的设计模式之路。它属于类创建模式,根据需求,我们可以根据传入的参数来返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式包含如下角色: 工厂角色(Creator) 是简单工厂...
2018-11-07 14:44:56 3621
原创 Spring Boot教程十六:SpringBoot注入类实现多线程
在使用springboot框架开发的过程中,难免也会用到多线程业务处理的需求,如果是普通的类实现多线程,那使用我们上一篇文章中的方法就足够了。但是大部分的使用环境是是我们需要将一个注入容器的实例类实现多线程,比如业务中要操作数据库调用其他方法等都难免要引用其他的实例。但是spring中的实例默认是单例的,针对这种情况我们应该怎么实现多线程呢,下面给大家用demo详细解释一下: 在spri...
2018-11-02 16:34:39 13341 2
原创 Mysql查询当前数据库有哪些事务、都锁定哪些资源
SELECT trx_id AS `事务ID`, trx_state AS `事务状态`, trx_requested_lock_id AS `事务需要等待的资源`, trx_wait_started AS `事务开始等待时间`, trx_tables_in_use AS `事务使用表`, trx_tables_locked AS `...
2018-11-01 14:14:47 11772
SSM进阶3(Spring+SpringMVC+Mybatis)
2017-06-28
SSM进阶2(Spring+SpringMVC+Mybatis)
2017-06-27
SpringMVC事务管理
2017-06-25
Maven SpringMVC进阶
2017-06-12
java redis demo
2017-06-02
java 反编译工具(jar)
2017-05-08
Java+MySQL+redis缓存
2016-12-18
springMvc(注解)
2016-11-08
Spring+SpringMvc+Mybatis
2016-10-25
MyBatisCodeHelper插件破解版
2018-12-12
windows下搭建redis集群工具
2017-10-26
idea 鼠标悬浮到引用的类或者方法上提示注释不完整
2019-05-07
feign使用中遇到的问题
2018-03-17
Springboot admin监控
2018-03-13
springboot admin和springcloud配合使用
2018-03-13
springboot main方法启动报错
2017-11-22
Java数据库操作方式还有哪些
2016-12-18
log4j配置日志第二天不自动保存
2016-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人