当前位置:  开发笔记 > 编程语言 > 正文

适合任务的设计模式

如何解决《适合任务的设计模式》经验,为你挑选了1个好方法。

我需要以各种格式保存图像文件.格式列表可能会经常更改,因此我希望保存可以非常可扩展.此外,保存可以在许多地方进行(硬盘,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.

请告知如何将各个部分组合在一起.

谢谢.

瓦伦丁.



1> Spence..:

首先,我将在您的Image上实现流.这样,您可以从流中创建构造函数,以及为任何"图像"子类创建流的方法.

另外,我会创建你的"保存"基础设施来简单地接受流并将它们写到适当的技术上(ftp,文件等)

这样你最终得到可扩展的图像(如果你可以获得一个流,你可以做很多很多事情),你最终得到一个可扩展的保存基础设施(任何可以转到流的东西都可以保存)

编辑:就个人而言,数据类型对象的保存方法听起来像是在错误的地方,但不知道你的整个系统,我不能肯定地说.只是我的2c.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有