質問

非DIシステムをプログラミングする際に私と一緒に立ち往生メタファーは「彼/彼女のおもちゃで遊んでた人」です。オブジェクトは何もされているオブジェクトや人のおもちゃいる人は、店舗を作成し初期化し、操作します。彼らは、特定の状態に達したときにおもちゃがイベントを送出することができますが、彼らはそれらを使用している人について何も知りません。彼らは、そのインターフェイスを構成する制御スイッチとほんの少しのブラックボックスです。人はおもちゃからのイベントをリッスンし、そのインタフェースを操作することで対応できます。人は彼/彼女が彼/彼女のおもちゃで欲しいものは何でも行うことができますが、彼らが壊れる可能性があるため、彼/彼女は、おそらく彼らの内臓とおせっかい行くべきではありません。

DIは私のメタファー時に天下大混乱は、それが彼らの所有者を知って意識的な人間、それらを使用する人の中におもちゃを回すことです。おもちゃは、この人を操作することができますが、人は、彼らがどのように動作するかの何も知らないとさえ気にしません。人はただのおもちゃを所有し、おもちゃがおもちゃ自身の満足度に彼/彼女を操作する見込みます。

WTF?それは恐ろしい!!の
を鳴らし を、彼らがどのようにDIシステムの仕事を考えるために使用してきた?

良い精神的なメタファーとは何ですか
役に立ちましたか?

解決

SOLID <のhref = "http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx" のrel = "nofollowをnoreferrer">良いソースですの動機付けのイメージます。

依存性注入原理のメタファー

他のヒント

紳士と彼の執事を考えてみてください。バトラー(DIフレームワークは)(「初期化」:-)時に、朝のコーヒーのような、いくつか、)紳士に彼は要求に応じて必要なすべてのサービス(外部依存関係)を提供します。紳士(クラス)はちょうどサービスを消費し、彼らがどこから来た限り、彼らは彼の要件(特定のインタフェースを実装)を満たすよう、気にしません。

それとも、あなたのメタファーにそれを近づけるようにしたい場合は、あなたのクラスが子供である、DIフレームワークはお母さんであり、玩具は、他のコンポーネントです。おもちゃはどこから来た子供がいる限り、彼女は彼女が彼らと望んでいる方法を再生することができますよう、気にしません。

私の視点からあなたのメタファーに関してDIと非DIとの違いは、それぞれの人が自分のおもちゃを作る、非DIシステムである - 彼らはそれらを作る方法を知っている必要があり、彼らは唯一のおもちゃを使用することができます彼ら作ります。 DIでは、人は、彼らが与えられているおもちゃを使用しています。彼らはそれらを作る方法を知らないが、彼らは、彼らがいる限り、彼らはおもちゃがどのように動作するかを知っているように与えられている任意のおもちゃで遊ぶことができます。

レゴ。

1つまたは複数のインターフェイス(上に少しバンプ)を公開し、一つ以上のセッターまたはコンストラクタ引数(下の穴)を有するソフトウェアコンポーネントとして、レゴブロックを考える。

あなたはレゴの箱を購入した場合、

、ブロックは事前に組み立てられた(ハードワイヤード)を付属していません。彼らは独立したコンポーネントです。その後セッター/コンストラクタ(ホール)へのインタフェース(バンプ)を接続することによって、(それらをワイヤ)それらを組み立てます。各ブロックは、直接他のブロックについて何も知りません。ブロックはそれらを組み立てるために必要とされるよりも、他の何か - 。それはあなたです(。またはメイン()やSpring設定ファイルなど)

私が知っている...レゴが大幅に統一されたインタフェースを持っているので、これはビットを破壊する - それが私の作品: - )

私は、コンピュータシステムを使用します。あなたは、システムのブロックを持っている、とあなた(DI)、それにモニタ、キーボードとマウスを接続します。システムブロックのみをモニタがDVIデバイスであることを知っているが、それは正確に監視されていない気。これは、USBマウスを使用する方法を知っているが、それは、光やボール転がりマウスで天候を知っているか気にしません。

あなた - DIフレームワーク
。 システムブロックは - 提供されているシステムです
。 モニタ/マウス/キーボード - システムブロックにDI(あなた)が提供するサービス。

おもちゃは意識しません。彼らはただのフックに文字列の人のネクタイビットを聞かせて、特定の物事が起こるとき、フックが回転し、人は何かが起こったのを知っているように文字列が、上に引かれます。

私はそれがCDプレーヤーのことをしたに関係したと言われた一つのDIのメタファー。プレーヤーは、CDはあなたが入れたものを気にしません。しかし、あなたがプレイヤーに注入各CDには、プレイヤーはそれから必要とするものに基づいて異なる機能を提供します。

これは、すべての武士や武器についてです。 http://ninject.org/する:ninjectをチェックしてみてください。面白い比喩は、「道場をご覧ください」の文字に移動します。これはあなたが何を意味するのかですが、それはそれにもかかわらず、創造的かどうかわからない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top