我有一个类T和一个TFactory创建类型对象的工厂T。我想确保只允许工厂创建新T对象。
一个半心半意的解决方案是要求工厂作为T的构造函数中的参数,唯一的目的是只有至少带来工厂对象的人才能创建 的T:
class T
{
public T(TFactory Tf)
{
if (!(Tf is TFactory))
throw new InvalidOperationException("No factory provided");
}
}
但是,只要 aTFactory在手边,就可以构造T'。另一种方法是通过堆栈跟踪检查构造函数调用是否真的来自 TFactory 内部,但这对我来说似乎有点过分了。
第三种方法是将 TFactoryT和 TFactory 放在它们自己的程序集中,即 makeT的构造函数internal。但是一个新的项目和组装只是为了这个目的吗?
有人有更好的主意吗?(虽然我的代码是C#,但这可能是一个更笼统的问题)
喵喔喔
陪伴而非守候
一只名叫tom的猫
相关分类