1、Java设计模式
设计模式(GOF23
)就是设计者的思维,主要需要了解设计模式的应用场景及意义。
2、单例模式
保证一个类只有一个对象,并且提供一个开放的方法能够访问到该对象。
2.1 单例模式常用应用场景
- 在servlet编程中,每个servlet都是单例;
- 在spring中,每个Bean默认都是单例,方便spring容器管理;
- 数据库连接池的设计一般也采用单例模式;
- 在项目中,读取配置文件的类,一般也只有一个对象;
- 在springMVC框架中,控制器对象也是单例模式。
2.2 常见的单例模式实现方法
2.2.1 饿汉式
线程安全,调用效率高,不能延时加载
public class Singleton01 {
//类初始化时,立即加载这个对象(没有延时加载的优点)
private static Singleton01 instance = new Singleton01();
//私有化构造器
private Singleton01() {
}
//方法没有同步,调用效率高
public static Singleton01 getInstance() {
return instance;
}
}
2.2.2 懒汉式
线程安全,调用效率低,可以延时加载
public class Singleton02 {
//类初始化时不加载对象
private static Singleton02 instance;
//私有化构造器
private Singleton02() {
}
//方法同步,调用效率低
public static synchronized Singleton02 getInstance() {
//如果对象为空,则创建一个对象
if (instance == null) {
instance = new Singleton02();
}
return instance;
}
}
3、工厂模式
- 核心就是实例化对象,使用工厂方法代替new操作;
- 实现创建者和调用者的分离。
4、代理模式
- 通过代理,控制对对象的访问;
- 将统一的流程控制放到代理角色中处理。
代理模式常见的应用场景:
- 安全代理:屏蔽对真实角色的直接访问。
- 远程代理
- 延时加载:先加载轻量级的代理对象,需要时再加载真实对象。