一、模式介绍
- 单件模式确保一个类只有一个实例,并提供一个全局访问点。
- 相关组件
- Singleton:单例组件
这个模式比较简单,只有一个组件。
二、举例说明
- 场景:常被用来管理共享的资源,例如数据库连接或者线程池。
- 具体需求:召唤师峡谷中当英雄第一次访问商店时,创建这个商店,供以后所有的英雄使用。
三、代码实现
- 单例 商城
public class Store { private volatile static Store uniqueInstance; private final String storeName; // 构造方法设置为私有的 private Store() { System.out.println("第一次有人访问商店,开始执行创建..."); this.storeName = "峡谷商店:" + System.currentTimeMillis(); } /** * 使用双重检查保证线程安全、高效 * * @return */ public static Store getInstance() { if (uniqueInstance == null) { synchronized (SingletonB.class) { if (uniqueInstance == null) { uniqueInstance = new Store(); } } } return uniqueInstance; } public String getStoreName() { return storeName; } }
- 使用
public static void main(String[] args) { System.out.println("我是寒冰,进入商店:" + Store.getInstance().getStoreName()); System.out.println("我是盖伦,进入商店:" + Store.getInstance().getStoreName()); System.out.println("我是流浪法师,进入商店:" + Store.getInstance().getStoreName()); }
- 执行结果(使用的都是同一个商店)