2011-06-25 45 views
0

如果你有一個庫/框架/類實現類似Rake的依賴管理,它似乎對通用編程有用,即將代碼分解爲任務和依賴關係。有沒有'耙樣'的設計模式?

例如,想象一下在flickr上管理用戶照片庫的應用程序。該應用程序可能會被分解爲具有相互依賴關係的類似Rake的任務。登錄可能是一項任務,同步用戶照片可能是另一項依賴於登錄任務的任務,刪除照片可能是一項依賴於用戶數據最新的任務。

這似乎是一個簡單/(基本)的概念,可能已經作爲一個設計模式存在,或者甚至作爲一個圖書館(理想情況下在C或Objective-C),除非它是一個非常糟糕的想法..(請評論) ?

這是否會重新發明一個實現Rake的Objective-c(或您選擇的語言)以供在桌面應用程序內部使用,而不是作爲構建實用程序?

+1

這非常含糊。 Rake與Rake有什麼不同,具體而言,具有哪些相似之處? – jalf

+0

你知道Rake做什麼嗎?想象一下,不是作爲構建工具,而是像桌面應用程序的中心架構,比如說,Photoshop。我的問題僅僅是這已經是一個公認的設計模式?對不起,你覺得它含糊不清。 – hooleyhoop

+0

是的,我知道它做了什麼,但我不明白「作爲中央架構」的含義。它的角色究竟是什麼?你問的基本上是「有沒有像橙色的東西,可以在上下班之間運送人們?」是的,那裏*可能*是。但是他們是完全不同的東西,對於任何不在你腦海的人來說都是不清楚的。*一個人如何處理另一個人的工作。我可以在這兩者之間找出十幾個相似之處,但我不知道哪些特定的*你感興趣。 – jalf

回答

1

如果你正在談論的是實際的依賴管理,我不會稱之爲設計模式。

閱讀有關如何執行directed acyclic graphtopological sort,依賴關係管理歸結爲此。

我認爲這樣的圖書館很有可能存在。

編輯

我剛剛發現this library,它可能證明是有用的。實際上它是一個相當大的圖書館,但它包含一個能夠(或者聲稱可以做)拓撲排序的類。

我應該補充一點,我很確定沒有處理這個問題的設計模式。確定應該完成一個給定的相互依賴的任務序列的順序只是一個圖論問題。我鏈接的維基百科文章幾乎包含了你需要知道的一切。

不應該那個類工作,我認爲從頭開始實現它或從另一種語言翻譯(例如Python:我似乎記得Twisted爲您提供這樣的功能)並不困難。

更編輯

我不認爲在實現您的應用程序依賴管理將重塑車輪只是另一種情況。如果你需要它,編碼。也就是說,除非您可以找到適合您需要的兼容許可證的通用工作庫。在這種情況下,通過一切手段使用它。這真的很簡單。

+0

謝謝你的回答@ s.m。我非常想將任務表示爲DAG節點,管理它們的執行並跟蹤它們的狀態。節點將具有與緩存行爲,重置條件,異步/同步執行等有關的屬性。這幾乎是對Rake的一種天真的重新實現 - 這很好(對我來說並不難解決),只要我我不會忽視現有的策略/設計,這種策略/設計是由比我更聰明的人試驗和測試的。非常有趣的是Twisted可以做到這一點。 – hooleyhoop

相關問題