1
4
单件模式可能有效吗?到描述如何在C中实现单例的msdn文章的链接: http://msdn.microsoft.com/en-us/library/ff650316.aspx 在您的特定示例中,singelton实例可以用您的magicID扩展一个抽象基类。 只是一个想法:) |
2
5
你基本上
不能
制作
您可以考虑使用具有相同方法但虚拟的并行类层次结构,然后将原始类的每个实例与包含以前静态成员的类的实例相关联…可能每一个都只有一个实例。 |
3
3
我会质疑是否有“充分的理由”使抽象成员保持静态。 如果您认为这些成员可能反映了派生类本身的某些属性,而不是给定的实例,那么这并不一定意味着这些成员应该是静态的。
考虑一下
考虑一些需要
为什么这么乱?这样好多了,对吧?
但也许你还有其他我没有想到的好理由。 |
4
2
最好的选择是使用magicid接口,只使用setter
根据静态意义的本质,只能有一个(是的,像高地人),你不能超越它们。 使用接口假定客户机将实现合同。如果他们想要为每一个都有一个实例,或者返回一个静态变量的值,这取决于他们。 保持事物静态的好理由也意味着您不需要在子类中重写它。 |
5
0
不是这个选择的忠实粉丝,但是… 您可以声明属性static而不是abstract、virtual,并引发NotImplementedException,该异常返回一条错误消息,说明必须在派生类中重写该方法。 您将错误从编译时移动到运行时,尽管这有点难看。 |
6
0
实现静态成员继承的语言通过元类来实现(也就是说,类也是对象,这些对象具有元类,并且静态继承通过元类存在)。您可以模糊地将其转换为工厂模式:一个类具有魔力成员,并且可以创建第二个类的对象。 或者使用反射。但您不能在编译时确保派生类静态实现某个属性。 |
7
0
为什么不把它变成一个非静态的成员呢? |
8
0
听起来像是单态的? http://c2.com/cgi/wiki?MonostatePattern |
9
0
这个 provider pattern 例如,由ASP.NET成员资格提供程序使用的,可能是您要查找的内容。 静态成员上不能有多态行为,因此您将有一个静态类,该类的成员委托给将封装多态行为的接口(或抽象类)字段。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |