2

假设我有一个读取图像文件的过程,然后允许使用调整大小算法进行放大和缩小。这可以分解为如下类:

ImageFileReader
ImageFileFormatIdentifier
ImageFileValidator
ImageFileHeaderParser
ImageZoomer
ImageResizer

结合这些类的最合适的方法是什么?

它们是否应该“松散”以便程序员可以按照他认为适合其代码的方式编写它们?

或者它们应该以这样一种方式设计,即一个对象具有对它所依赖的另一个类的引用或接口?

此外,对于分层架构,似乎对于Service层,第一种方法往往是特权,方法被用于组合。这是一种模式吗?

4

1 回答 1

1

我建议阅读器和验证器紧密耦合,因为当你阅读时,你想确认内容是有效的。(这在您的编辑之前应用!)

如果要任意使用缩放和调整大小,那么我建议您有一个总体控制器,并使用修改参数将图像传递给缩放/调整大小,并将结果传递回控制器。

这是 Facade 模式的使用,当多个服务(Reader/Identifier/Validator/etc)看起来是一个通过协调其他组件的行为来提供简化功能(Load/Zoom/Resize/Save/etc.)的服务时。

此外,通过将控制反转视为一种模式,您可以在更改时间插入进一步的行为。例如,您可以为图像加载器、验证器和保存器定义接口,然后您可以随时添加对其他图像类型的支持。

于 2013-03-21T17:22:11.393 回答