2011-06-25 7 views
0

Rakeの依存関係管理のようなものを実装しているライブラリ/フレームワーク/クラスがあれば、汎用プログラミング、つまりコードをタスクや依存関係に分割すると便利だろうと思われます。「レイクのような」デザインパターンはありますか?

たとえば、flickrでユーザーフォトライブラリを管理するアプリを想像してみてください。このアプリは、相互依存関係のあるRakeライクなタスクに分類される可能性があります。ログインは1つのタスクで、ユーザーの写真を同期させることは、ログインするタスクに依存する別のタスクである可能性があります。写真を削除することは、ユーザーのデータが最新のものであることに依存します。

これは本当に悪い考えでない限り、これはデザインパターンとして、またはライブラリ(理想的にはcまたはobjective-c)として既に存在するかもしれない単純な(基本的な) ?

ビルドユーティリティではなく、デスクトップアプリケーションで内部的に使用する目的で、Objective-c(または選択した言語)でRakeを実装するためにホイールを改革する予定ですか?

+1

これはかなり曖昧です。レイクとは違い、レイクとはまったくどのように類似しているのですか? – jalf

+0

レイクは何をしていますか?たとえば、ビルドユーティリティとしてではなく、たとえばPhotoshopのようなデスクトップアプリケーションの中心的なアーキテクチャとして考えてみましょう。私の質問は、これはすでに認識されているデザインパターンですか?申し訳ありません、それは曖昧です。 – hooleyhoop

+0

はい、私はそれが何をしているのか知っていますが、私はあなたが「中心的な建築物」として何を意味するのか見ていません。その役割はまったく何ですか?あなたが求めているのは、基本的には、「仕事に出入りする人々を輸送するために、オレンジのようなものはありますか?はい、あります*かもしれません。しかし、彼らは根本的に異なるものです。あなたの頭の中に住んでいない人にとっては、誰かが他の人の仕事をどうやって行うのかは分かりません。私は両者の間に12の類似点を描くことができましたが、私はあなたが興味を持っているものは何もないのです。 – jalf

答えて

1

あなたが話しているのは実際の依存関係管理ですが、私はそれをデザインパターンと呼んでいません。

topological sortdirected acyclic graphを読むには、それまで依存関係管理が必要です。

このようなライブラリが存在する可能性は非常に高いと思います。

編集

私はちょうどそれが有用であることが分かるかもしれない、this libraryを発見しました。実際にはかなり大きなライブラリですが、トポロジカルな並べ替えを行う(またはできると主張する)クラスが含まれています。

これを扱うデザインパターンがないと私は確信しています。どのような順序で相互依存するタスクを完了させるべきかを把握することは、単なるグラフ理論の問題です。私がリンクしたウィキペディアの記事には、あなたが知る必要があるすべてのものが含まれています。

このクラスは機能しないはずですが、ゼロから実装することや他の言語から翻訳することは難しくないと思います(例えばPythonの場合:Twistedはそのような機能を提供します)。

さらに編集

私はあなたのアプリケーションに依存関係の管理を実装するホイール改革のちょうど別のケースだろうとは思いません。必要な場合は、コード化してください。つまり、ニーズに合った互換性のあるライセンスを持つ一般的な作業ライブラリを見つけることができない限りです。その場合は、必ずそれを使用してください。それは本当に簡単です。

+0

お返事ありがとうございます。タスクをDAGノードとして表現し、ノードの実行を管理し、ノードの状態を追跡することを非常に考えていました。ノードには、キャッシング動作、リセット条件、非同期/同期実行などに関するプロパティがあります。これは、Rakeの素朴な再実装です。これは、私が取り組むにはあまりにも難しくありません。私よりも信者によって試され、テストされ書かれたもののための既存の戦略/デザインを見落としてはいない。 Twistedがこれをやっている可能性が非常に興味深い。 – hooleyhoop