【发布时间】:2010-09-06 10:02:31
【问题描述】:
我有一组继承自我创建的抽象类的类。我想将抽象类用作创建抽象类的具体实现实例的工厂。
有什么方法可以对除父类之外的所有代码隐藏构造函数。
基本上我也想做这个
public abstract class AbstractClass
{
public static AbstractClass MakeAbstractClass(string args)
{
if (args == "a")
return new ConcreteClassA();
if (args == "b")
return new ConcreteClassB();
}
}
public class ConcreteClassA : AbstractClass
{
}
public class ConcreteClassB : AbstractClass
{
}
但我想阻止任何人直接实例化 2 个具体类。我想确保只有 MakeAbstractClass() 方法可以实例化基类。有没有办法做到这一点?
更新
我不需要从 Abstract 类外部访问 ConcreteClassA 或 B 的任何特定方法。我只需要我的 Abstract 类提供的公共方法。我真的不需要阻止具体类被实例化,我只是想避免它,因为它们没有提供新的公共接口,只是抽象类内部一些非常具体的东西的不同实现。
对我来说,最简单的解决方案是make child classes as samjudson mentioned。但是我想避免这种情况,因为它会使我的抽象类的文件比我希望的要大得多。我宁愿将课程分成几个文件进行组织。
我想这个问题没有简单的解决方案......
【问题讨论】:
标签: c# inheritance oop