屬性檔案用於儲存系統配置,避免硬編碼導致每次修改需重新編譯。採用單例模式管理屬性檔案,確保全系統共用同一配置實例,並支援運行時熱加載更新。
getInstance() 提供全域存取點。public final class ConfigManager {
private static final String PFILE = System.getProperty("user.dir") + File.separator + "singleton.properties";
private static final ConfigManager INSTANCE = new ConfigManager();
private final File file;
private long lastModified;
private final Properties props = new Properties();
private ConfigManager() {
file = new File(PFILE);
lastModified = file.lastModified();
loadProperties();
}
public static ConfigManager getInstance() { return INSTANCE; }
public Object getConfigItem(String name, Object defaultVal) {
long current = file.lastModified();
if (current > lastModified) loadProperties(); // 熱加載
lastModified = current;
Object val = props.getProperty(name);
return val != null ? val : defaultVal;
}
// ... 省略 loadProperties 實作細節
}
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line;
while (!(line = reader.readLine()).equals("quit")) {
System.out.println(ConfigManager.getInstance().getConfigItem(line, "Not found."));
}
每個 Java 應用程式僅有一個 Runtime 實例,透過 Runtime.getRuntime() 取得。常用於:執行外部命令、查詢記憶體資訊、觸發 GC、載入原生庫。
// 啟動記事本
Process proc = Runtime.getRuntime().exec("notepad.exe");
// Windows 下以關聯程式開啟文件
Process proc = Runtime.getRuntime().exec("cmd /c start MyDocument.doc");
JavaBean 自省機制的核心,BeanBox 等視覺化設計工具依賴它動態發現 Bean 的屬性、事件與方法。建構子私有,靜態工廠方法 getBeanInfo() 回傳單例實例。

抽象類別,提供 getDefaultToolkit() 靜態同步方法回傳平台相關的具體實現。結合模板方法模式:工廠方法延遲到子類別實現,不同作業系統提供不同的 Toolkit 子類別。
值得注意的是:若子類別建構子為私有,則為標準單例;若為公開,則屬於「不完全單例」。

Swing 計時器內部使用的不完全單例,擁有公開建構子,詳見後續章節討論。