假设我有某种数据结构(例如图像),我想以不同的方式预处理和后处理,以便进一步处理更多的处理步骤。使用像C ++这样的OOP语言实现这一责任的最佳方式是什么?
进一步假设我有许多具有固有复杂性的不同处理算法,我很可能希望将它们封装在专用类中。这意味着虽然外部的算法实现必须在我的数据中设置某种信息以指示它已被处理。这对我来说也不像是干净的设计,因为处理过程似乎是与数据相关的信息,因此数据对象本身应该自行确定和设置。
它在复杂的应用程序中看起来也是一个非常常见的错误来源:有人实现了另一种处理算法,忘记在数据中适当地设置标志,在应用程序的完全不同的部分中的某些部分不会按预期工作有人会发现很多有趣的错误。
有人可以勾勒出一个好的,失败的方法的一般结构来实现这样吗?
答案 0 :(得分:0)
为了确保我明白你在问什么,这是基于我对这个问题的解读的假设:
问题是如何以面向对象的方式做到这一点,以避免未来的错误,因为程序的复杂性增加。
一种方法是让图像数据对象封装二进制数据和已应用于它的转换记录,负责通过Transformation对象委托执行转换;转换对象实现了处理算法以及是否可以根据以前的转换应用它的知识。
所以你可以定义以下内容(请原谅我类似于Java的命名风格;自从我完成C ++以来已经很长时间了):
我认为这可以实现你想要的 - 图像转换算法在类中以多态方式定义,但转换的实际应用仍然由数据对象“控制”。因此,我们不必信任外部代码来设置/检查标志等正确的事情。