假设您有一个“ 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


如果我要解决的问题是DataPackageDataPackageManager的“尽可能简单”的实现,这是正常的设计吗?我目前在DataPackageDataPackageManager中实现了所有这些东西,并在考虑我在这里提出的建议是否比我现有的要好。

最佳答案

如何将DataPackage封装为两个不同的类,一个用于数据库相关的东西,另一个用于文件相关的操作。

DBDataPackageManager {
DataPackage dataPackage;
//get, set, remove, modify etc etc
}

FileDataPackageManager {
//file operations on DataPackage object.
}

10-08 00:13