java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍 懒汉式单例、饿汉式单例。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
- //懒汉式单例类.在第一次调用的时候实例化自己
- 懒汉式单例的实现没有考虑线程安全问题,它是线程不安全的,并发环境下很可能出现多个Singleton实例,要实现线程安全,使用synchronized修饰。public class Singleton {
- //私有的默认构造子
- private Singleton() {}
//注意,这里没有final
private static Singleton single=null;
//静态工厂方法
public synchronized static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
2、)单例饿汉模式://饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造子
private Singleton1() {}
//已经自行实例化
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
public class Singleton1 {
//私有的默认构造子
private Singleton1() {}
//已经自行实例化
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
3、工厂模式:
interface IFactory{
public IProduct createProduct();
}
Class Factory implements IFactory{
public IProduct createProduct(){
return new Product();
}
}
Public class client{
Public Static void main (String [] args){IFactory factory=new Factory();
IProduct product=factory.createProduct();
product.ProductMethod();
}
}