假设我有一个读取图像文件然后允许使用调整大小算法放大和缩小的进程。这可以分解为如下类:
ImageFileReader
ImageFileFormatIdentifier
ImageFileValidator
ImageFileHeaderParser
ImageZoomer
ImageResizer
组合这些类的最合适方法是什么?
它们是否应该“松散”以便程序员可以按照他认为适合他的代码的方式组合它们?
或者它们应该以这样一种方式设计,即一个对象具有对它所依赖的另一个类的引用或接口(interface)?
此外,在分层架构中,Service
层似乎第一种方法往往具有特权,方法用于组合。这是一种模式吗?
最佳答案
我建议阅读器和 validator 紧密耦合,因为当你阅读时,你想要确认内容是否有效。 (这在您的编辑之前应用!)
如果要任意使用缩放和调整大小,那么我建议您有一个总体 Controller ,图像通过修改参数传递给缩放/调整大小,并将结果传递回 Controller 。
这是 Facade 模式的使用,当多个服务(Reader/Identifier/Validator/etc)看起来是一个服务,通过协调其他组件。
此外,通过将控制反转视为一种模式,您可以在不同时间插入更多行为。例如,您定义图像加载器、 validator 和保存器的接口(interface),然后您可以在不同时间添加对其他图像类型的支持。
关于java - 解析进程 : keeping classes/instances separate or having them chained?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553927/