自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 设计模式(八)--外观模式

外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。何时使用: 1、客户端不需要知道

2020-10-11 22:48:52 120

原创 设计模式(七)--享元模式

享元模式在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。享元模式的结构与实现享元模式中存在以下两种状态:内部状态,即不会随着环境的改变而改变的可共享部分;外部状态,指随环境改变而改变的不可

2020-10-07 10:46:10 136

原创 设计模式(六)--装饰器模式

介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。如何解决:将具体功能职责划分,同时继承装饰者模式。关键代码: 1、Component 类充当抽象角色,不应该具体实现。 2、修饰类引用和继承 Component 类,具体扩展类重写父类方法。应用实例: 喝咖啡,我们可以往咖啡里加一份糖,让他

2020-10-01 20:30:49 159

原创 设计模式(五)--组合模式

介绍意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。**如何解决:**树枝和叶子实现统一接口,树枝内部组合该接口。**关键代码:**树枝

2020-10-01 20:05:30 152 1

原创 设计模式(四)--桥接模式

桥接模式假设场景:农民有一个果园,里面可以种植各种水果,比如可以种植苹果、葡萄,又有两种土地可以种植:红土地,黑土地。使用类的继承来实现:package bridge;class Fruit{ public void plant(){ System.out.println("种植了水果"); }}class Apple extends Fruit{ @Override public void plant(){ System.

2020-10-01 18:37:13 173

原创 设计模式(三)--适配器模式

适配器模式目的:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.假设场景:以前的手机是有内存卡的,手机用户把数据放在内存卡里,手机是可以直接读取内存卡中的数据的。但是后来这种用内存卡的手机慢慢被淘汰了,可是你又想读取内存卡中的数据,于是你买了个电脑读取,但是电脑只能读取u盘的数据,不能够直接读取内存卡中的数据,电脑需要读卡器间接读取内存卡中的数据。这里的内存卡就是需要转换的接口,我们现有的东西(电脑)无法兼容使用这个接口(内存卡),所以

2020-10-01 14:06:05 80

原创 设计模式(二)--工厂模式(抽象工厂)

之前学习了简单工厂和工厂方法。我以数据库的连接实例作为例子,学习了这两个模式的简单使用。假设现在每个数据库都有一个自己的性能测试工具,我们也需要去创建他们的实例,这时候就可以使用抽象工厂模式。工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。区别

2020-09-30 18:57:36 75

原创 设计模式(二)--工厂模式(工厂方法)

为什么要有工厂方法模式?之前学习了简单工厂我们明白了,简单工厂虽然有一定的好处,但是还不够好,它无法满足开闭原则,我们在如果新增产品的话,就需要更改已有的工厂类。工厂方法模式就是在简单工厂的基础上,满足开闭原则,让我们只需要新增类就好,不用去更改已有代码。展示下之前的Database、Mysql、SqlServer三个类。package study.factory.method;/** * @author 阿呆的小鸡仔 */public abstract class Database {

2020-09-29 20:32:45 74

原创 设计模式(二)--工厂模式(简单工厂)

为什么要有工厂模式?       我们在学习一个东西之前,应该要先了解下他为什么出现,他解决了什么问题。这样才可以带着思考的高效学习。       以数据库为例,我们知道常见的关系型数据库有mysql、sqlserver、oracle等,每种数据库连接实例的创建都是复杂且易错麻烦的。如果将这些连接实例交给用户来创建,是十分不合适的。我们就希望有一个类帮我负责这些不同

2020-09-29 18:41:07 254

原创 设计模式(一)--单例模式

什么是单例?单例模式保证类无论何时获得的都是同一个实例。单例模式的好处?对于频繁使用的类,单例模式可以节省下创建对象的时间。对于一些很复杂的类,他们的创建需要不小的消耗。怎么实现的单例模式因为要保证实例的唯一性,所以单例的类必须将构造函数私有化,不能让外界可以直接new 该对象。那么就必须还有一个静态方法来获得单例的Instance(静态方法不依赖实例)。很快就可以想到一种实现:class Singleton{ /*构造函数私有化*/ private Singleton(){}

2020-09-28 17:25:48 69

原创 Java中的四种引用类型

Java中的四种引用类型,分别是强引用、软引用、弱引用、虚引用。强引用:我们平时最常使用的引用就是强引用。例如 Object o=new Object();这里的 o 就是一个强引用。我们知道java是有垃圾回收机制的,只要对象还被强引用指向,那么这个对象就还不会被回收,但是如果强引用不指向这个对象了,GC就会回收该对象。做个实验来验证一下:public class A { private String name; A(String name) { this.n

2020-08-22 23:10:15 90

原创 ThreadLocal的作用

关于ThreadLocalJDK1.2的版本中就提供java.lang.ThreadLocal类,每一个ThreadLocal能够放一个线程级别的变量, 它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。ThreadLocal包含了四个方法:void set(Object value) -- 设置当前线程的线程局部变量的值。public Object get() -- 该方法返回当前线程所对应的线程局部变量。public void remove() -- 将当前线程局

2020-08-22 16:58:00 315

原创 Spring系列(三)-InitializingBean与DisposableBean接口的作用

在Spring中,当我们希望bean在初始化之后再执行一些事情,就可以实现InitializingBean接口。该接口只有一个方法 afterPropertiesSet(),该方法将在Bean构造函数执行完之后调用。如果该Bean 还配置了init-method,那么也是先执行afterPropertiesSet(),再执行init-method。...

2020-08-05 09:16:13 537

原创 Spring系列(二)-BeanPostProcessor接口的作用

这个也是一个很经常在工程中看到的接口实现,从字面上 BeanPostProcessor 的意思就是 Bean 的后置处理器。主要作用就是帮助我们在bean实例化之后,初始化前后做一些事情。spring 会自动从它的所有的 bean 定义中检测 BeanPostProcessor 类型的bean 定义,然后实例化它们,再将它们应用于随后创建的每一个bean实例。在 bean 实例的初始化方法回调之前调用 BeanPostProcessor 的postProcessBeforeInitialization

2020-08-04 15:25:32 8548

转载 Spring系列(一)-SmartLifecycle接口的作用

再熟悉公司项目的代码时候发现的这个接口,许多类都实现了他,再次记录下他的作用。说明:Spring 的IOC是我们最常用到的功能,能帮我们管理bean。但是我们有时需要在bean全部加载和初始化完毕之后,再做一些事情。这个接口就可以满足我们的需求。SmartLifecycle 是一个接口。当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口的类中对应的方法(start()方法)。import org.springframework.context.SmartLifecycle;im

2020-08-04 15:06:20 514

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除