在密封类中实例化另一个类的推荐方法是什么:
public sealed class AvayaService
{
private static Lazy<AvayaService> lazy =
new Lazy<AvayaService>(() => new AvayaService());
public static AvayaService AvayaServiceInstance
{
get
{
if (!lazy.IsValueCreated)
lazy = new Lazy<AvayaService>(() => new AvayaService());
return lazy.Value;
}
}
private AvayaService()
{
}
public static Response GetResponse(Request request)
{
var _repository = new Repository(); // what is the best way to get the instance here
}
}
public class Repository : IRepository
{
...
}
我正在尝试学习密封类和惰性实例化,但是我在思考应该在密封类中实例化另一个类的推荐方法?
答案 0 :(得分:-1)
没有&#34;建议&#34;在这方面。如果您已阅读建议,请再次阅读,这很可能只是一个练习。它给你一个想法,但在一个真实的项目中使用这个想法取决于你。有时这些练习表现出相反的方法。有时,存储库所有者会指定违反您之前阅读的任何规则的风格,并且它完全没问题。
这是另一个实例化练习,我认为这有助于尝试:永远不会实例化除了值对象之外的任何东西。将实例化委派给container。避免单例模式,但将您的服务注册为容器中的单例。通过这种方式,您的代码将如下所示:
public sealed class AvayaService
{
private readonly IRepository _repository;
public AvayaService(IRepository repository)
{
if(repository == null)
throw new ArgumentNullException();
_repository = repository;
}
public static Response GetResponse(Request request)
{
// use _repository
}
}