面试题答案
一键面试概念阐述
- 控制反转(IoC - Inversion of Control):
- IoC是一种设计原则,它将对象创建和对象之间的依赖关系管理从应用程序代码本身转移到外部容器或框架。通过IoC,对象不再自己负责查找和创建它们所依赖的对象,而是由外部容器提供这些依赖。这样做的好处是降低了组件之间的耦合度,提高了代码的可维护性和可测试性。
- 依赖注入(Dependency Injection):
- 依赖注入是实现IoC的一种具体方式。在依赖注入中,当一个对象需要使用另一个对象(即依赖)时,通过构造函数、属性或方法参数的方式将依赖传递给该对象,而不是在对象内部自行创建依赖。
示例代码
- 定义服务接口和实现类:
// 定义服务接口
public interface IService
{
void DoWork();
}
// 服务接口的实现类
public class Service : IService
{
public void DoWork()
{
Console.WriteLine("Service is doing work.");
}
}
- 使用依赖注入的类:
// Consumer类,通过构造函数注入依赖
public class Consumer
{
private readonly IService _service;
public Consumer(IService service)
{
_service = service;
}
public void Consume()
{
_service.DoWork();
}
}
- 测试依赖注入:
class Program
{
static void Main()
{
// 创建服务实例
IService service = new Service();
// 创建Consumer实例,并通过构造函数注入服务
Consumer consumer = new Consumer(service);
consumer.Consume();
}
}
在上述代码中,Consumer
类依赖于IService
,通过构造函数将IService
的具体实现(这里是Service
类的实例)注入到Consumer
类中,实现了依赖注入。