Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Objective c 是否有一个';耙状';设计模式?_Objective C_Design Patterns_Rake - Fatal编程技术网

Objective c 是否有一个';耙状';设计模式?

Objective c 是否有一个';耙状';设计模式?,objective-c,design-patterns,rake,Objective C,Design Patterns,Rake,如果您有一个库/框架/类实现了类似于Rake的依赖关系管理的东西,那么它似乎对通用编程非常有用,即将代码分解为任务和依赖关系 例如,设想一个用于管理flickr上用户照片库的应用程序。该应用程序可能被分解为具有相互依赖性的类似Rake的任务。登录可能是一项任务,同步用户照片可能是另一项依赖于登录任务的任务,删除照片可能是一项依赖于用户最新数据的任务 这似乎是一个简单的/(基本的)概念,可能已经作为一种设计模式或甚至作为一个库存在(最好是c或objective-c),除非这是一个非常糟糕的想法。。

如果您有一个库/框架/类实现了类似于Rake的依赖关系管理的东西,那么它似乎对通用编程非常有用,即将代码分解为任务和依赖关系

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

这似乎是一个简单的/(基本的)概念,可能已经作为一种设计模式或甚至作为一个库存在(最好是c或objective-c),除非这是一个非常糟糕的想法。。(请评论)


这是否意味着在Objective-c(或您选择的语言)中实现Rake,以便在桌面应用程序中内部使用,而不是作为构建实用程序?

如果您所说的是实际的依赖关系管理,我不会称之为设计模式

阅读关于如何做大量的依赖关系管理的文章,依赖关系管理可以归结为这一点

我认为很有可能存在这样一个图书馆

编辑

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

我应该补充一点,我非常确定没有一种设计模式可以处理这个问题。弄清楚一系列相互依赖的任务应该按什么顺序完成只是一个图论问题。我链接的维基百科文章几乎包含了你需要知道的一切

如果该类不起作用,我想从头开始实现它,或者通过从另一种语言(例如Python:我似乎记得它为您提供了这样一种功能)进行翻译并不困难

更多编辑


我不认为在你的应用程序中实现依赖关系管理只是轮子改造的另一个例子。如果你需要它,编码它。也就是说,除非您能找到一个通用的、可工作的、具有适合您需要的兼容许可证的库。在那种情况下,一定要使用它。其实就是这么简单。

这很模糊。比如说Rake,它与Rake有什么不同,确切地说,有什么相似之处?你知道Rake是做什么的吗?想象一下,它不是一个构建工具,而是一个桌面应用程序(比如photoshop)的核心架构。我的问题很简单,这已经是公认的设计模式了吗?对不起,你觉得它含糊不清。是的,我知道它的作用,但我不明白你所说的“作为中心建筑”是什么意思。它的角色到底是什么?你问的基本上是“有没有类似桔子的东西,可以用来运送人们上下班?”是的,可能有。但它们是根本不同的东西,任何一个不在你脑海中的人都不清楚一个会如何做另一个的工作。我可以在这两者之间找出十几个相似之处,但我不知道你对哪一个感兴趣。它的作用类似于Rake的——管理依赖的任务。我相信你真的明白这一点。你真的认为“Rake做什么有名字吗?”类似于“有什么东西像桔子一样,用来运送人们上下班吗?”。有些人可能会认为这让你听起来像个混蛋。说实话,你问题的原始版本不是很清楚。我对这类事情很感兴趣,只是做了一些有根据的猜测,但我根本不知道你在说什么。谢谢你的回答@s.m。我一直在考虑将任务表示为DAG节点,管理它们的执行并跟踪它们的状态。节点将具有与缓存行为、重置条件、异步/同步执行等相关的属性。这将非常简单地重新实现Rake—这很好(对我来说也不太难解决),只要我没有忽略现有的策略/设计,这些策略/设计是由比我更聪明的人尝试、测试和编写的。很有趣,Twisted也许能做到这一点。