网上一个朋友问人注入是怎么回事,我一时语塞。我并不能很好的用尽量通俗的语言来表达这个意思。我说,我写一个代码片段吧,也许这样容易理解些。但发现效果并不明显。
代码示例如下:
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的文章发给他看看,后来也放弃了。
进而一步,怎么样才能将一个技术问题向别人说清楚,明白?
努力向其靠近…
Comments: