定义:
单例模式(Singleton Pattern)是结构最简单的设计模式,它 的核心结构中只包含一个被称为单例类的特殊类。通过单例模式 可以确保系统中一个类只有一个实例,且该实例易于被外界访问, 从而方便对实例个数的控制并节约系统资源。
优点:
提供了对唯一实例的受控访问
可以节约系统资源,提高系统的性能
允许可变数目的实例(多例类)
缺点:
扩展困难(缺少抽象层)
单例类的职责过重。单例模式与单一职责原则有冲突。一个类应该只实现一个逻辑,而不关心它是否是单例的,是不是要单例取决于环境,单例模式把“要单例”和业务逻辑融合在一个类中
由于自动垃圾回收机制,可能会导致共享的单例对象的状态丢失
适用环境:
系统叧需要一个实例对象,戒者因为资源消耗太大而叧允许创建 一个对象
客户调用类的单个实例叧允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例
实例uml图
实例目录:
实例代码:
Singleton.java
package singleton;
public class Singleton {
private static Singleton singleton=null;
private Singleton() {
}
public static Singleton getInstance() {
if(singleton==null) {
singleton=new Singleton();
}
return singleton;
}
}
Client.java
package singleton;
public class Client {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
Singleton s3=Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
运行结果: