假设您有一个“ 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
中实现了所有这些东西,并在考虑我在这里提出的建议是否比我现有的要好。 最佳答案
如何将DataPackage封装为两个不同的类,一个用于数据库相关的东西,另一个用于文件相关的操作。
DBDataPackageManager {
DataPackage dataPackage;
//get, set, remove, modify etc etc
}
FileDataPackageManager {
//file operations on DataPackage object.
}