|
|
1
12
据我所知,接口不能是单例,因为它实际上并不存在。接口是实现必须遵循的契约。因此,实现可以是单例,但接口不能。 |
|
|
2
7
虽然我同意其他人的观点,即单例被过度使用,但你的问题的一个可能解决方案是提供一个抽象基类,其中包含派生单例的类型参数:
任何从Singleton派生的类都将具有正确类型的静态Instance属性:
在使用这样的东西之前,你应该认真考虑是否需要单例,或者你是否更适合使用普通的静态类。 |
|
|
3
4
好吧,我把这个答案做成了维基,因为我只是想提供一个与你的问题相切的意见。 我个人认为singleton被过度使用了,这是一个IMO实际上相当罕见的用例,在大多数情况下,静态类更适合用例,在其他情况下,工厂创建的imutable对象是最好的选择,实际的singleton比人们想象的要少得多。 我不会有一个接口来描述这种常见模式,因为我实际上希望对单例的每一次使用都进行非常仔细和合理的考虑。 |
|
|
4
2
写一个单元测试。 |
|
|
5
2
我知道这不是你的问题,但你有多少单身汉需要一个接口?在我看来,这听起来像是糟糕的设计——你能清楚地解释为什么这些类应该是单例而不是实例吗?如果你的答案是记忆,我建议你过度思考你的应用程序,如果你真的很担心,可以看看轻量级模式(或者一个简单的工厂模式)。很抱歉没有直接回答这个问题,但这听起来不是个好主意。 |
|
|
6
1
此外,正如您所说,它不起作用,您将如何使用此接口和实现类? 您可以尝试使用Factory风格的界面
|
|
|
7
0
鉴于接口面向对象编程的经典概念将其定义为实现类之间的契约,你不能向其中添加静态方法这样的东西。如果你能这样做,你将以一个更类似于抽象类的东西结束,在这个抽象类中,你有你的类的部分实现和扩展类所需的其他部分。 |
|
|
8
0
正如所指出的,你不能这样做,你有充分的理由不应该这样做。 我过去实现的方法创建了一个接口和一个实现该接口的抽象基类。它看起来像这样:
string键{get;} 对象设置值{get;set;} 设置范围范围{get;set;} }
|
|
|
9
0
|
|
EarthTurtle · 调整泛型抛出迭代器的异常类型 1 年前 |
|
wallop · 实现必须明确提及所有接口字段,还是可以跳过它们? 1 年前 |
|
|
Reelie · C#11-通过抽象类在接口中静态抽象成员? 2 年前 |
|
Addem · 在OCaml签名中放入类型声明的正确方法是什么 2 年前 |