解决流程:将类/实例分开或将它们链接起来?

时间:2013-03-21 17:13:18

标签: java oop design-patterns

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

ImageFileReader
ImageFileFormatIdentifier
ImageFileValidator
ImageFileHeaderParser
ImageZoomer
ImageResizer

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

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

或者它们的设计是否应该使一个对象具有与其依赖的另一个类的引用或接口?

另外,对于分层架构,似乎第一种方法具有Service层,因此可以使用方法进行组合。这是一种模式吗?

1 个答案:

答案 0 :(得分:1)

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

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

当使用Facade模式时,多个服务(Reader / Identifier / Validator / etc)似乎是一个通过协调行为提供简化功能(加载/缩放/调整大小/保存/等)的服务。其他组件。

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