假设我有一个Monkey类,有时需要获取Banana的一个实例.提供这种香蕉的方式对猴子不感兴趣,但它确实启动了香蕉采集.
现在我至少有三种方法可以将我的猴子送到香蕉供应商那里.最好的方法是什么?
1.事件
提出一个Monkey.BananaNeeded事件.事件处理程序设置BananaNeededEventArgs.Banana属性.
2.界面
调用IBananaProvider.GetBanana.该IBananaProvider实例作为构造函数参数或通过属性注入到monkey中.
3.代表
调用类型的委托System.Func<Banana>.委托作为构造函数参数或通过属性注入猴子.这个很诱人,因为它不需要声明任何额外的接口或类,但显然它不是一个受欢迎的选择.
我不喜欢事件和委托选项,除非有一种机制可以确保不会附加多个处理程序.因此,选项2是IMO的赢家.
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |