像 Alexander Stepanov 和 Sean Parent 这样的人投票赞成采用正式和抽象的软件设计方法。
这个想法是将复杂系统分解为有向无环图,并在表示该行为的节点中隐藏循环行为。
Parent 在 boost-con 和 google 上做了演示(来自 boost-con 的表格,第 24 页介绍了这种方法,还有一段google talk 的视频)。
虽然我喜欢这种方法并认为它是一种必要的发展,但我在想象如何处理具有无定形行为的子系统时遇到了问题。
例如,想象一个状态机的通用模式:使用所有状态都支持的接口,并在状态的具体实现中具有不同的行为。
一个人将如何解决这个问题?
请注意,我只是在寻找一种抽象的方法。
我可以考虑将该行为隐藏在节点后面并为状态定义不同的子 DAG,但是如果您想从子 DAG 影响主 DAG 的行为,这会使设计变得相当复杂。