Добавьте интерфейс (скажем, IFileHandler
), который определяет контракт на получение удаленного файла, затем реализуйте то, что у вас есть, чтобы получить от сетевого диска, за одной реализацией этого интерфейса (скажем, под названием NetworkFileHandler
). ).
Затем создайте вторую реализацию (скажем, FtpFileHandler
) этого интерфейса, которая получает файл с FTP-сайта. Во второй реализации вы предоставляете дополнительную информацию (имя пользователя и пароль) конструктору класса FtpFileHandler
.
Затем, чтобы изменить приложение на одно или другое, вам просто нужно изменить, какую реализацию интерфейса вы используете.
Это позволит вам затем добавить другие способы получения файла в будущем, например BitTorrentFileHandler
для получения файлов из источника битторрента или NntpFileHandler
для загрузки файлов из группы новостей.
Интерфейс IFileHandler может выглядеть примерно так:
interface IFileHandler
{
void SaveFileLocally(string sourceFile, DirectoryInfo targetLocation);
}
хотя то, как он должен выглядеть, будет зависеть от того, что вам нужно сделать.