Я борюсь с небольшой проблемой в отношении того, как я собираюсь реорганизовать это на приличный шаблон.Как реорганизовать это?
public class DocumentLibrary
{
private IFileSystem fileSystem;
private IDocumentLibraryUser user;
public DocumentLibrary(IDocumentLibraryUser user) : this(user, FileSystemFrom(user)) { }
public DocumentLibrary(IDocumentLibraryUser user, IFileSystem fileSystem)
{
this.user = user;
this.fileSystem = fileSystem;
}
public void Create(IWorkerDocument document)
{
document.SaveTo(fileSystem);
}
public IWorkerDocument AttemptContractRetrieval()
{
return new Contract(fileSystem, user);
}
public IWorkerDocument AttemptAssignmentRetrieval()
{
return new Assignment(fileSystem, user);
}
private static IFileSystem FileSystemFrom(IDocumentLibraryUser user)
{
var userLibraryDirectory = new DirectoryInfo("/DocLib/" + EnvironmentName() + "/" + user.Id);
return new FileSystem(userLibraryDirectory);
}
private static string EnvironmentName()
{
using (var edmxContext = new Entities())
{
return (from setting in edmxContext.EnvironmentSettings
where setting.Name == "EnvironmentName"
select setting.Value).First();
}
}
}
У меня есть два типа рабочих документов, но я не могу легко реорганизовать два метода выше (AttemptContractRetrieval
и AttemptAssignmentRetrieval
) в приличном виде.
Любая помощь будет высоко оценена.
С уважением, Джим.
В чем проблема? возможно, я отстаю от времени, но мне рефакторинг не кажется необходимым для такого упрощенного примера. –
Дело в том, что мне нужно будет добавить еще несколько документов в ближайшее время, и мне не нравится идея добавлять этот метод каждый раз. – Jimmeh
Если вы собираетесь добавлять дополнительные документы, создайте базовый класс для предоставления этих методов. Я думаю, что, вероятно, я не понимаю проблему. я буду следить за чем-то. –