![](/img/trans.png)
[英]C# - is it possible to implement the singleton pattern by using an interface?
[英]Using the Singleton pattern with an interface in C#
注意:即使有很多类似的问题,我都没有找到答案。
问题:我想在C#中实现一个类,该类以以下方式使用单例模式。
namespace DAL
{
public class CDAL : IDAL
{
/* Singleton Pattern */
private CDAL instance = null;
private CDAL()
{
}
public IDAL getInstance()
{
if (instance != null)
{
return instance;
}
else
{
CDAL.instance = new CDAL();
return CDAL.instance;
}
}
}
}
问题是实例和方法getInstance应该是静态的 ,因为我想“询问”该实例的类而不是对象。 但是使用c#我似乎无法在接口中执行任何静态操作。
我该如何解决?
没错,您不能在接口上执行任何静态操作,因为这没有任何意义。 使用抽象类而不是接口来实现静态逻辑。
用静态成员创建接口没有任何意义。 接口是一种约定,而静态成员始终通过类名而不是实例名访问。 因此,简短地说,您的界面不知道哪个正确的实例实现了正确的逻辑。 在您的情况下,不需要在接口中定义方法getInstance()
。 与Singleton
使用时,界面通常仅用于unit testing
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.