Java程序设计模式
一.什么是设计模式?
* 设计模式是软件开发过程中,能够增加系统的健壮性、可扩展性、可维护性的一种模式或者一种软件设计思想。
* 设计模式不是框架。框架大于设计模式
二.常见设计模式?
* 1.单例模式:一个类只允许创建一个实例化对象。 (面试考点)
* -- 分类:饿汉式和懒汉式
* ①.饿汉式:构造方法私有化,无法直接创建实例化对象,只能通过static方法取得实例化对象
* ②.懒汉式:当第一次访问的时候才会为其产生实例化对象操作。
* 当多个线程并发执行getInstance方法的时候,懒汉式会存在线程安全的问题,是线程不安全的
* 需要使用synchronized来实现线程的同步,当一个线程获取锁的时候其他线程只能在外等待其执行完毕
* 2.饿汉式和懒汉式的区别:
* ①.饿汉式是线程安全的,懒汉式是线程不安全的。
* ②.饿汉式是空间换时间,当类装载的时候就会创建实例,每次调用的时候无需再做判断节省了时间
* 懒汉式是时间换空间,体现了缓存的思想,刚开始不加载资源,等使用的时候才会加载
*
* 3.单例模式的使用场景
* ①.充当共享数据:例如Web页面计数器
* ②.防止创建多个对象过度消耗资源:多次访问IO或者数据库等资源
懒汉式
public class Singleton1 {
// 声明私有的成员变量
private static Singleton1 instance = null;
/**
* 私有的构造器
*/
private Singleton1() {
}
/**
*
* 方法描述:创建实例对象
* @return
*/
public static Singleton1 getInstance() {
if (instance == null) {
synchronized (Singleton1.class) {
if (instance == null) {
instance = new Singleton1();
}
}
}
return instance;
}
}
饿汉式
public class Singleton {
// 创建私有的实例化对象,在类的内部可以访问私有属性
private static Singleton instance = new Singleton();
/**
* 私有的构造器
*/
private Singleton() {
}
/**
*
* 方法描述:获取实例化对象
* @return
*/
public static Singleton getInstance() {
return instance;
}
}