我有一个类,在其中注入了两个服务依赖项。我正在使用Unity容器。
public interface IOrganizer
{
void Method1();
void Method2();
void Method3();
}
public class Organizer : IOrganizer
{
private IService1 _service1;
private IService2 _service2;
public Organizer(Iservice1 service1, IService2 service2)
{
_service1 = service1;
_service2 = service2;
}
public void Method1()
{
/*makes use of _service1 and _service2 both to serve the purpose*/
}
public void Method2()
{
/*makes use of only _service1 to serve the purpose*/
}
public void Method3()
{
/*makes use of only _service2 to serve the purpose*/
}
}
虽然它可以正常运行,但在我仅调用Method2
和Method3
时,Unity不必要地创建了另一个不需要的服务实例,这样有点臭。 这里的代码片段只是为了说明而示例。在实际情况中,注入服务的对象图本身相当深。
有没有更好的设计和解决这种情况的方法?
service1
和service2
可以注册为单例,它们将只被创建一次,因此在不需要特定方法的服务时,使用该服务将不会产生任何成本。也就是说,在.NET中实例化对象的开销非常低 - 我们真正进入了微观优化领域。 - NightOwl888