是否有'类似耙子'的设计模式?

时间:2011-06-25 10:26:53

标签: objective-c design-patterns rake

如果你有一个库/框架/类实现类似Rake的依赖管理,它似乎对通用编程很有用,即将代码分解为任务和依赖。

例如,想象一下用于在flickr上管理用户照片库的应用程序。应用程序可能会被分解为具有相互依赖性的类似Rake的任务。登录可能是一项任务,同步用户照片可能是依赖于登录任务的另一项任务,删除照片可能是一项取决于用户数据是最新的任务。

这似乎是一个简单/(基本)概念,可能已经作为设计模式或甚至作为库(理想情况下在c或objective-c)存在,除非它是一个非常糟糕的主意..(请评论)?

这会重新发挥作用,在Objective-c(或您选择的语言)中实现Rake,以便在桌面应用程序内部使用,而不是作为构建实用程序使用吗?

1 个答案:

答案 0 :(得分:1)

如果您所谈论的是实际的依赖关系管理,我不会将其称为设计模式。

了解如何topological sortdirected acyclic graph,依赖关系管理归结为此。

我认为很有可能存在这样的图书馆。

修改

我刚刚找到this library,它可能会很有用。实际上它是一个相当大的库,但它包含一个类(或声称它可以做)拓扑排序。

我应该补充一点,我很确定没有一种设计模式可以解决这个问题。确定应该完成给定的相互依赖任务序列的顺序只是图论问题。我链接的维基百科文章包含了您需要了解的所有内容。

不应该该类工作,我认为从头开始实现它或通过翻译另一种语言并不困难(例如Python:我似乎记得Twisted为你提供了这样的能力)。

更多编辑

我认为在您的应用中实施依赖关系管理不会仅仅是车轮改造的另一个案例。如果您需要,请编码。也就是说,除非您能找到适合您需要的兼容许可证的通用工作库。在这种情况下,一定要使用它。真的很简单。