【发布时间】:2014-09-13 16:03:27
【问题描述】:
在 C# 或 Java 中,我怎样才能创建一个只能用它实现的接口实例化的类?
对不起,如果之前有人问过这个问题。
编辑:很抱歉让您感到困惑,这个问题只是出于好奇:
例如我有:
interface iA
{
int addNum();
}
interface iB
{
int minusNum();
}
class A implements iA, iB
{
private int A;
public int addNum()
{
A += 10;
return A;
}
public int minusNum()
{
A -= 10;
return A;
}
}
class TestIface
{
public static void main(String args[]) {
A testA = new A();
iA testiA = new A();
iB testiB = new A();
testA.minusNum(); // No error, it has access to both methods
testA.addNum();
testiA.minusNum();//ERROR
testiA.addNum();
testiB.minusNum();
testiB.addNum();//ERROR
}
}
我想知道是否有办法阻止开发人员只创建 testA 并访问这两种方法。
【问题讨论】:
-
不存在这样的东西。
-
这样做有什么收获?
-
你可以潜在地使实现成为一个只返回接口的工厂的嵌套类。问题是,为什么?
-
1.创建一个工厂并仅使用该工厂(提供者模式)实例化您的类,2.使用实例化类的 Unity Container。第三条建议是解释原因,然后您可以获得更好的答案