Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解决流程:保持类/实例分离还是将它们链接起来?_Java_Oop_Design Patterns - Fatal编程技术网

Java 解决流程:保持类/实例分离还是将它们链接起来?

Java 解决流程:保持类/实例分离还是将它们链接起来?,java,oop,design-patterns,Java,Oop,Design Patterns,假设我有一个进程,它读取一个图像文件,然后允许使用调整大小算法进行放大和缩小。可以将其分解为以下几个类: ImageFileReader ImageFileFormatIdentifier ImageFileValidator ImageFileHeaderParser ImageZoomer ImageResizer 组合这些类最合适的方法是什么 它们是否应该是“松散的”,这样程序员就可以按照自己认为合适的方式在代码中编写它们 或者,它们的设计方式是否应该使一个对象具有对其依赖的另一个类的引

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

ImageFileReader
ImageFileFormatIdentifier
ImageFileValidator
ImageFileHeaderParser
ImageZoomer
ImageResizer
组合这些类最合适的方法是什么

它们是否应该是“松散的”,这样程序员就可以按照自己认为合适的方式在代码中编写它们

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


此外,对于分层体系结构,似乎对于
服务
层,第一种方法倾向于被优先使用,方法用于组合。这是一种模式吗?

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

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

当多个服务(读卡器/标识符/验证器/等)似乎是一个通过协调其他组件的行为来提供简化功能(加载/缩放/调整大小/保存等)的服务时,这就是Facade模式的使用


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

要回答您的问题,我们需要了解更多有关预期应用程序的信息。文件格式列表是固定的,还是用户可以扩展它?图像是否总是会被放大和调整大小,或者一些用户是否不需要这样做?也就是说,这个问题更适合程序员。stackexchange.com。文件格式列表应该是固定的,但功能应该可以从应用程序的pov扩展。理论上的目的是放大和缩小,大小调整器用于产生这种效果。而且,我认为它更适合程序员se,因为它不是一个涉及代码的问题?如果是这样的话,请随意将问题转移过来。感谢您的见解和确认。调整大小用于模拟缩放效果。实际上,我已经用ApachePDFBox完成了这项工作。那么它们也应该耦合?不过,缩放器和大小调整器可能用于其他上下文。这使我认为,针对接口编程任何Doer类都是有用的。