我需要以各种格式保存图像文件.格式列表可能会经常更改,因此我希望保存可以非常可扩展.此外,保存可以在许多地方进行(硬盘,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
.
请告知如何将各个部分组合在一起.
谢谢.
瓦伦丁.
首先,我将在您的Image上实现流.这样,您可以从流中创建构造函数,以及为任何"图像"子类创建流的方法.
另外,我会创建你的"保存"基础设施来简单地接受流并将它们写到适当的技术上(ftp,文件等)
这样你最终得到可扩展的图像(如果你可以获得一个流,你可以做很多很多事情),你最终得到一个可扩展的保存基础设施(任何可以转到流的东西都可以保存)
编辑:就个人而言,数据类型对象的保存方法听起来像是在错误的地方,但不知道你的整个系统,我不能肯定地说.只是我的2c.