【发布时间】:2011-08-16 10:20:44
【问题描述】:
我有以下几点:
interface File
{
String name();
...
}
interface FileService
{
List<File> getAllFiles();
...
}
在使用此类接口时如果我决定删除由 File 实例表示的实体(我的意思是从远程服务器中删除),我应该怎么做?
我是否应该为文件接口引入delete() 方法(因为它是信息专家并且可能知道如何从服务器中删除自己)?或者我应该通过void deleteFile(File file) 接口方法将此功能委托给它的创建者——FileService?为什么?
如果第一种情况更合适,如何使对象无效以避免其后续使用?
以及相关:我应该如何处理uploadFile() 案例?谁应该为此负责?因为看起来 FileService 可能会违反 SRP。
谢谢,
【问题讨论】:
-
视情况而定。如果不深入了解您的软件架构,就不可能对此发表任何明智的看法。
-
什么是“信息专家”?
-
@Matti Virkkunen:Information_Expert - 我允许自己更正问题
-
@Tomasz Nurkiewicz:是的,我指的是 GRASP 的信息专家,谢谢您的指正。
-
@Oli Charlesworth:取决于什么?
FileService是一个外观,它提供对存储在某处(例如远程服务器上)的文件的访问。它将提供如下方法:uploadFile()、findFile(criteria)等。Filei-face 表示远程数据。因此常见的用例:是操作远程文件,获取有关它们的统计信息。
标签: java architecture object ooad