私はGoogleのguiceに出くわして、実際にそれを理解することができなかったし、それが何をしたのか、それの周りに誇大宣伝のようです。私は、図書館のクロージャー的な視点を得ることを望んでいたし、クロージャーアプリケーションで必要とされている/不要であること、そして言語に組み込まれた同様のものがあれば、google guiceに相当するclojureは何ですか?
13
A
答えて
14
Javaのオブジェクト指向(OO)とタイプのシステムのために、(テスト(模擬)目的のための)異なる基礎となる実装を動的に切り替えることは、管理が難しいことがあります。 Google Guiceのようなライブラリは、Javaのこれらのdependency injectionsをもっとうまく処理することを意図しています。
Clojureや他の関数型言語では、関数を渡すことができます。これにより、さまざまな実装を簡単に使用できます。
これはClojureの中で行うことができますいくつかの方法があります:
- 高階関数のパラメータとしての機能の選択を使用するには。
- (Re)関数の選択肢をvarにバインドします。
- クロージャ内で選択した関数をカプセル化し、それを渡して呼び出すことができます。
第12章Clojure Programmingには、依存性注入のようなOOパターンの素晴らしい例と、Clojureでこれを処理する別の方法があります。
Sean DevlinもClojureの依存性注入についてFull Disclojure videoを持っています。しかし彼の例はより良く選ばれたかもしれない。クロージャで完全に異なる関数実装を使用する代わりに、彼はファンクションの異なる「バージョン」を返すファクトリを使用します。しかし要点は同じです。
基本的に、依存性注入は、OOPで必要な悪であり、FPで簡単に解決できる(または問題ではない)パターンです。
6
関連する問題
- 1. google guiceのSpringスケジューラに相当するものは何ですか?
- 2. Clojureのスレッディングマクロに相当するScalaは何ですか?
- 3. Python doctestに相当するClojure?
- 4. Midje Clojureに相当するJUnit AfterClass?
- 5. SilverlightでWinform Control.Handleに相当するものは何ですか?
- 6. ScalaのandThenのClojure相当
- 7. Google Apps ScriptのSTDOUTに相当するものは何ですか?
- 8. db._initialize_properties -Google App EngineのNDBに相当するものは何ですか?
- 9. ブロブストア "Create_upload_url"に相当するGCSは何ですか?
- 10. ScalaのflatMapに相当するGuavaとは何ですか?
- 11. IPythonはClojure find-docに相当しますか?
- 12. Pythonイディオムのclojureに相当するものは "if __name__ == '__main__'"ですか?
- 13. SoapExtension for JSON WebMethodに相当するものは何ですか?
- 14. AWTにあるMouseMotionListenerに相当するSWTは何ですか?
- 15. pythonでisinstanceに相当するissubclassは何ですか?
- 16. C#でLinkedHashSet(Java)に相当するものは何ですか?
- 17. Javascriptでこれに相当するものは何ですか?
- 18. MonoTouchでCGImageCreateWithImageInRectに相当するものは何ですか?
- 19. 郵便で@ Html.Rawに相当するものは何ですか?
- 20. iOSフレームワークでLinkedListに相当するものは何ですか?
- 21. エリクサーで "const array"に相当する方法は何ですか?
- 22. PythonでGNU splitに相当するものは何ですか?
- 23. Clojureには `first`に相当するreduce関数がありますか?
- 24. C++のdynamic_castに相当するC#とは何ですか?
- 25. Javascriptの.sampleに相当するものは何ですか?
- 26. PHPの "self ::"に相当するC#とは何ですか?
- 27. phpMyAdminのアスタリスク(*)に相当するものは何ですか?
- 28. JavaのThrowableに相当するC#とは何ですか?
- 29. WiredTigerに相当するNoPaddingとは何ですか?
- 30. JSONObjectに相当するJackson 2とは何ですか?
ライブラリリンクありがとうございます。彼らはむしろ面白く見える。私はあなたの評価に同意します.Gloiceは依存性注入だけでは解決できない解決策を提供していますが、Clojureではライブラリを必要としないパターンがいくつかあります。 (例ではNoirを見てください。defpage構造の仕組みと、自動名前空間の読み込みとコレクションを集めてrefやatomで囲まれたマップにします)。 – deterb
合意。 Rich Hickeyが「シンプリシティ」について話している理由と、なぜ非常に多くの開発者が現在、Spring Frameworkの構成怪物について不平を言っているのかと考えています。いずれにしても、Clojureアプリケーションの中には、このようなフレームワークを必要とするように(明らかに)大きくなっているものがあります。 – noahlz