架構設計
// 1. 實體類別實作 Serializable
class Employee implements Serializable {
private int id; String name; double salary;
// getter/setter, toString
}
// 2. 資料存取層
class EmployeeDAO {
private static final String FILE = "employees.dat";
public void saveAll(List list) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE))) {
oos.writeObject(list);
}
}
@SuppressWarnings("unchecked")
public List loadAll() {
File f = new File(FILE);
if (!f.exists()) return new ArrayList<>();
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE))) {
return (List) ois.readObject();
}
}
}
// 3. 主程式選單
while (true) {
// 1.新增 2.查詢 3.修改 4.刪除 5.退出
// 操作 List 並即時 saveAll()
}
優缺點
| 優點 | 缺點 |
| 零依賴、極簡部署 | 無法高效查詢(全量載入)、無交易支援、並發不安全 |
進階建議
- 改用 SQLite (JDBC) 或 H2 內嵌資料庫,獲得 SQL 查詢能力。
- 或使用 Jackson 序列化為 JSON,可讀性更好。