Java的登记式单例代码
来源:互联网 发布:买个淘宝皇冠店多少钱 编辑:程序博客网 时间:2024/04/28 07:09
网上很多关于登记式单例的代码,有的是错误的,有的过于繁杂,因此自己写了一个代码例子,供大家参考。
参考了并补全了https://github.com/simple-android-framework-exchange/android_design_patterns_analysis/tree/master/singleton/mr.simple
中的内容。
package com.dumaisoft.singleton;import java.util.HashMap;/** * @author wxb * Description:登记式单例,将需要单例的类都登记在一个Manager中,需要时调取 * 在Android系统中,我们经常会通过Context获取系统级别的服务,比如WindowsManagerService, * ActivityManagerService等,更常用的是一个叫LayoutInflater的类。这些服务会在合适的时候以单例的形式注册在系统中, * 在我们需要的时候就通过Context的getSystemService(String name)获取。 * 这些服务就是使用了登记式单例的模式。 * * 2016-1-24 * 下午9:33:21 */public class TestSingleton5 { public static void main(String[] args) { Singleton_1 s1 = (Singleton_1) SingletonManager.getSingleton(Singleton_1.class.getName()); s1.doSomething(); Singleton_2 s2 = (Singleton_2) SingletonManager.getSingleton(Singleton_2.class.getName()); s2.doSomething(); Singleton_3 s3 = (Singleton_3) SingletonManager.getSingleton(Singleton_3.class.getName()); s3.doSomething(); }}class SingletonManager { private final static HashMap<String, Object> map = new HashMap<String, Object>(); //在静态域中直接注册本系统所需的所有单例类 static { registeSingleton(Singleton_1.class.getName(),new Singleton_1()); registeSingleton(Singleton_2.class.getName(),new Singleton_2()); registeSingleton(Singleton_3.class.getName(),new Singleton_3()); } public static void registeSingleton(String name, Object singleton) { if (!map.containsKey(name)) { map.put(name, singleton); } } public static void unregisteSingleton(String name) { if (map.containsKey(name)) { map.remove(name); } } public static Object getSingleton(String name) { if (map.containsKey(name)) { return map.get(name); } else { return null; } }}class Singleton_1 { public void doSomething() { System.out.println(this.getClass().getName() + " do sth."); }}class Singleton_2 { public void doSomething() { System.out.println(this.getClass().getName() + " do sth."); }}class Singleton_3 { public void doSomething() { System.out.println(this.getClass().getName() + " do sth."); }}
0 0
- Java的登记式单例代码
- java单例类继承问题--使用登记式单例的发现
- Java设计模式之单例模式之登记式单例
- 自定义函数的登记
- 登记式单例模式
- 登记式单例模式(Singleton)
- 单例模式的实现代码:懒汉式、饿汉式、登记式
- 代码段登记:xptable 和截取时间
- java常用的几种单例模式(懒汉式、饿汉式、登记式)
- atexit()函数登记顺序的的验证
- 登记照背景为什么是蓝色的
- 关于信息登记的一点心得
- 礼品登记服务获得全球的重要性
- 基于手工登记的被动访客系统
- 可申请登记的著作权类型
- 科室登记使用新的提示
- 响应式的车牌登记页面
- 基于DHT网络的IP登记算法
- 跟我学SpringMVC目录汇总贴、PDF下载、源码下载
- Android基础之AdapterView系列学习
- VmWare下CentOS 6.3 磁盘空间满处理操作
- 零售户聚类改善
- android 2015 年最热门的 10 篇技术文章
- Java的登记式单例代码
- C++转向C#的疑惑:难道C#中没有拷贝构造函数 ?
- Media Query媒体查询
- 十进制小数<==>二进制小数
- HDU 1035
- 1013. 数素数 (20)
- 蓝桥杯 入门训练 序列求和
- Head First C (前半部分)读书笔记
- 百度开放平台SDK错误解决