java 单例 生命周期_单例模式--- 声明周期托管方式
聲明周期托管方式,IOC
JAVA代碼
MyManager.java
import java.util.HashMap;
/**
* 為了管理對象的產生
* 對象的控制權給當前類負責
* 生命周期托管實現對象的單例
* IOC控制反轉
*/
public class MyManager {
// 存儲所有被管理的對象
private static HashMap beanMap = new HashMap<>();
// 獲取任何類的一個對象
// className : 類名
// return: (泛型T)
public static T getBean(String className) {
T obj = null;
try {
// 去beanBox看有沒有存在了
obj = (T) beanMap.get(className);
if (obj == null) {
// 1. 通過類名獲取類
Class clazz = Class.forName(className);
// 2. 通過反射產生一個對象
obj = (T) clazz.newInstance();
// 3. 加入集合
beanMap.put(className, obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
Sign.java
// 單例模式 IOC
// 生命周期給別人托管
class Sign {
public Sign() {
System.out.println("創建了一個實例");
}
}
Demo.java
public class Demo {
public static void main(String[] args) {
// 獲取一個實例
Sign instance1 = MyManager.getBean("Sign");
// 再獲取一個實例 ;注意,構造函數也只是執行了一次,所以引用一個對象
Sign instance2 = MyManager.getBean("Sign");
System.out.println(instance1);
System.out.println(instance2);
if (instance1 == instance2) {
System.out.println("引用了同一個實例");
} else {
System.out.println("不是同一個實例");
}
}
}
執行結果:
總結
以上是生活随笔為你收集整理的java 单例 生命周期_单例模式--- 声明周期托管方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java毕设动物管理系统_java毕业设
- 下一篇: java 泛型参数的类型_Java获得泛