私はモンキークラスを持っていて、時々バナナのインスタンスを取得する必要があるとします。このバナナが提供される方法は、サルには関心がありませんが、バナナの取得を開始します。イベント、デリゲート、またはインターフェイスですか?
今私は少なくとも3つの方法で猿をバナナプロバイダーに接続することができます。 これを行う最善の方法は何ですか?
1.イベント
Monkey.BananaNeeded
イベントを発生させます。イベントハンドラはBananaNeededEventArgs.Banana
プロパティを設定します。
2.インタフェース
呼び出しIBananaProvider.GetBanana
。 IBananaProvider
インスタンスは、コンストラクタの引数として、またはプロパティを通じて、サルに注入されます。
3.委任
タイプSystem.Func<Banana>
のデリゲートを呼び出します。デリゲートは、コンストラクタの引数として、またはプロパティを通じてサルに注入されます。これは余分なインタフェースやクラスの宣言を必要としないので魅力的ですが、明らかに一般的な選択ではありません。
+1おもしろい例がありますが、まあまあ、サルはバナナを手に入れても気にしません。気になるのはおいしいものです。 –
ファット・サル:while(true)_provider.GetBanana.Eat(); – Guffa
バナナの皮を処分するのを忘れないでください。私たちは、バナナの皮膚漏れが私たちの手にかかることは望ましくありません。 –