依赖注入的定义:是一组软件设计原则和模式来达到松耦合的代码。
松耦合的好处
1.晚绑定:一个服务可以替换成其他服务
2.可扩展性
3.并行开发
4.可维护性
5.单元测试
下面就是hello DI,使用了decorator模式
interface IMessageWriter
{
void Write(string msg);
}
class Salutation
{
private IMessageWriter messageWriter;
public Salutation(IMessageWriter messageWriter)
{
if (messageWriter == null)
{
throw new ArgumentNullException("Writer");
}
this.messageWriter = messageWriter;
}
public void Exclaim()
{
this.messageWriter.Write("Hello DI");
}
}
class ConsoleWriter:IMessageWriter
{
public void Write(string msg)
{
Console.WriteLine(msg);
}
}
class SecurityConsoleWriter : IMessageWriter
{
private IMessageWriter messageWriter;
public SecurityConsoleWriter(IMessageWriter messageWriter)
{
if (messageWriter == null)
{
throw new ArgumentNullException("Writer");
}
this.messageWriter = messageWriter;
}
public void Write(string msg)
{
if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
{
this.messageWriter.Write(msg);
}
}
}
class Program
{
static void Main()
{
//IMessageWriter writer = new ConsoleWriter();
//IMessageWriter sercurityWriter = new SecurityConsoleWriter(writer);
IMessageWriter sercurityWriter = new SecurityConsoleWriter(new ConsoleWriter());
Salutation Salutation= new <span style="font-family: Arial, Helvetica, sans-serif;">Salutation </span>(sercurityWriter);
situation.Exclaim();
Console.Read();
}
}