假设您有一个“DataPackage”的概念,它实际上是一个zip存档。您需要实现一个系统来管理数据包,典型的场景是“导入新的”,“删除现有”等。有理由不能将这些文件存储在数据库中。
问题是 - 如何将“DataPackage”的概念划分为与“数据方面”(与DB相关的东西)和“文件系统方面”(文件相关的东西)分开工作的类?
我正在考虑以下事项:
// data package concept
interface DataPackage {
string GetFileName();
DataTime GetDateTimeImported();
}
// data package manager concept
interface DataPackageManager {
DataPackage[] GetAllDataPackages();
DataPackage ImportDataPackage(string sourceFileName);
void DeleteDataPackage(DataPackage dataPackage);
}
// data package database aspect
interface DataPackageData {
int GetId();
void SetFileName(string fileName);
string GetFileName();
}
// data package database manager
interface DataPackageDataManager {
DataPackageData[] GetAllDataPackagesDatas();
DataPackageData CreateDataPackageData();
void DeleteDataPackageData(DataPackageData data);
}
// also, similar 2 classes for DataPackage's filesystem aspect
// these would be responsible for copying files, removing files, etc
如果我试图解决的问题是DataPackage
和DataPackageManager
的“尽可能简单”的实现,这是正常的设计吗?我目前在DataPackage
和DataPackageManager
中实现了所有这些内容,并思考我在这里建议的内容是否比我的内容更好。
答案 0 :(得分:1)
如何将DataPackage封装到两个不同的类中,一个用于数据库相关的东西,另一个用于与文件相关的操作。
DBDataPackageManager {
DataPackage dataPackage;
//get, set, remove, modify etc etc
}
FileDataPackageManager {
//file operations on DataPackage object.
}