您的位置:首页 > 其它

怎么样解释依赖注入?[提问而非回答]

2011-06-09 17:32 232 查看
网上一个朋友问人注入是怎么回事,我一时语塞。我并不能很好的用尽量通俗的语言来表达这个意思。我说,我写一个代码片段吧,也许这样容易理解些。但发现效果并不明显。

代码示例如下:

public interface IDisplay
{
void Display(string message);
}

public class LCD:IDisplay
{
public void Display(string message)
{
Console.WriteLine("Display In LCD");
}
}
public class CRT:IDisplay
{
public void Display(string message)
{
Console.WriteLine("Display In CRT");
}
}

public class Desktop
{
public IDisplay displayDevice = null;
public void ShowMessageOnScreen(string message)
{
displayDevice.Display(message);
}
}


清风醉  5:15:08 PM

public void Main()
{
Desktop desktop = new Desktop();

//注入LCD的实现
desktop.displayDevice = new LCD();
desktop.ShowMessageOnScreen("Display on LCD");

//注入CRT的实现
desktop.displayDevice = new CRT();
desktop.ShowMessageOnScreen("Display on CRT");

}


附带地我又加了一些说明:

清风醉  5:15:08 PM
Desktop(电脑)依赖显示设备(displayDevice)来显示信息
清风醉  5:15:31 PM
Desktop留一个接口IDisplay
cnblogs  5:16:01 PM
??
清风醉  5:16:02 PM
你可以向这个接口IDisplay注入符合规范的实现(LCD或CRT)
清风醉  5:16:13 PM
听不懂?
cnblogs  5:16:29 PM
嗯 有点懵
清风醉  5:16:50 PM
呵呵
清风醉  5:16:58 PM
可能是我太术语化了
清风醉  5:17:09 PM
你懂面向对象吗?
cnblogs  5:17:29 PM
只能说理解
清风醉  5:18:49 PM
通常我们说的注入,就是通过多态,来改变被注入者的行为


 

当我说完这些时,我越发地语塞了。我知道我已经说不清楚了,越解释越让人迷糊。本来我准备将Martin Fowler的文章发给他看看,后来也放弃了。

进而一步,怎么样才能将一个技术问题向别人说清楚,明白?

努力向其靠近…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: