cn.hncu.app
├── ui // 表現層
├── business // 邏輯層
│ ├── ebi // 業務介面
│ ├── factory // 業務工廠
│ └── impl // 業務實現
├── dao // 數據層
│ ├── dao // DAO 介面
│ ├── factory // DAO 工廠
│ └── impl // DAO 實現
├── vo // 值對象
└── utils // 工具類
命名規範:前綴.項目.模塊.層,公共類歸 common/base,工具類歸 util/tool。
// 封裝數據記錄
public class User implements Serializable {
private String name; private int age;
// getter/setter, equals/hashCode 基於 name+age
}
// 封裝查詢條件(擴展字段)
public class UserQueryVO extends User {
private String ageRange; // 如 "20-30"
}
// 介面
public interface UserDAO {
boolean addUser(User u);
Object[] getAllUsers();
// ... CRUD
}
// 工廠:解耦具體實現
public class UserDaoFactory {
public static UserDAO getUserDAO() { return new UserDaoFileIO(); }
}
// 文件存儲實現
public class UserDaoFileIO implements UserDAO {
private static final String FILE = "user.txt";
public boolean addUser(User u) { return FileIO.write(FILE, u); }
public Object[] getAllUsers() { return FileIO.read(FILE); }
// ...
}
public interface UserEbi { boolean addUser(User u); Object[] getAllUser(); }
public class UserEbo implements UserEbi {
public boolean addUser(User u) {
return UserDaoFactory.getUserDAO().addUser(u);
}
}
public class UserAddPanel extends JPanel {
private void jButton1ActionPerformed(ActionEvent evt) {
User user = new User(tfdName.getText(), Integer.parseInt(tfdAge.getText()));
UserEbi eb = UserEbiFactory.getUserEbi();
if (eb.addUser(user)) {
JOptionPane.showMessageDialog(this, "添加成功");
mainFrame.setContentPane(new UserListPanel(mainFrame));
}
}
}
設計時自頂向下:系統 → 子系統 → 模塊 → 組件 → 類。
實現時自底向上:類 → 組件 → 模塊 → 子系統 → 系統,每層測試通過再集成。
public interface BaseDAO<T, Q> {
boolean add(T entity);
boolean delete(String id);
boolean update(T entity);
T getById(String id);
List<T> getAll();
List<T> getByCondition(Q queryVO);
}