У меня есть требование сохранить файл изображения в различных форматах.
Список форматов может изменяться довольно часто, поэтому я хотел бы, чтобы сохранение было очень расширяемым.
Кроме того, сохранение может происходить во многих местах (жесткий диск, FTP, HTTP и т. Д.). Список сохраненных местоположений тоже будет меняться очень часто.
Я думал, что буду использовать базовый класс Image и много производных классов для каждого формата:
ImageBase {}
JpegImage : ImageBase {}
TiffImage : ImageBase{}
и обрабатывать сохранение в каждом подклассе соответствующим образом для форматирования.
Это хорошее дизайнерское решение?
Кроме того, как я могу прикрепить расширяемый механизм сохранения механизм (FTP, общий доступ к файлам и т. Д.)?
Я бы хотел что-то вроде этого:
var image=ImageBase.GetImageFromDisk(path);
//some casting to subclass maybe??
var tiffImage=image as TiffImage;
tiffImage.Location=new FtpLocation();//not sure if this is a good idea
tiffImage.Save();
Проблема здесь в том, что конкретная реализация образа не должна знать или заботиться о месте сохранения.
При вызове Save();
для подкласса изображения я хотел бы делегировать работу некоторому классу, например FtpLocation
.
Посоветуйте, пожалуйста, как собрать кусочки.
Спасибо.
Valentin.