一、代理模式
定义:
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。说简单点,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。通俗地来讲代理模式就是我们生活中常见的中介。
作用:
1、中介隔离作用
在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
2、方法增强功能
分类:
1、静态代理
2、动态代理
2.1 JDK自带基于接口实现代理
2.2 CGlib第三方基于子类实现代理
二、工厂模式
定义:
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
本质:
工厂方法代替new操作
三、单例模式
定义:
程序运行时,在java虚拟机中只存在该类的一个实例对象。
饿汉式:
在该类初始化的时候就创建实例对象,线程是安全的。
懒汉式:
首次使用单例实例的时候创建,之后使用时再判断单例实例是否已创建,如果没有则创建实例。
四、模板模式
定义:
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
优点:
1、封装不变的部分,将不变的部分抽取出来;
2、扩展可变的部分,将可变的设置抽象方法,让具体子类来实现;
3、抽取的公共代码,便于后期维护;
4、行为有基类来控制,具体操作有子类实现。
缺点:
每一个不同的实现都需要有一个子类来实现,这样就会导致类的数量大大的增加,使得系统更加庞大。
五、适配器模式
定义:
适配器模式属于“结构型模式”的一种。该模式的核心思想就是将类中原本不适合当前客户端使用的接口转换成适用的接口,从而大大提高程序的兼容性。并且从使用者的角度是看不到被适配的类地,也降低了代码之间的耦合性。
工作原理:
适配器模式的工作原理就是,用户调用适配器转换出来的接口,适配器在调用被适配类的相关接口,从而完成适配。
分类:
通过不同的实现方式,我们可以将其分成三类:类适配器模式,对象适配器模式,接口适配器模式。