Mat*_*ats 4 .net c# design-patterns class-design
C#.Net 4.0
我想知道我怎么能有一个只能从一个地方实例化的课程.一个例子:
我有一个Provider类.该类公开了一个名为GetData的方法.当的GetData被调用时,供应商将实例化一个数据类,填充并返回.该数据类不能被任何人不同,那么被实例化提供者,所以访问的数据将通过唯一的方式提供.一旦的GetData叫和呼叫者已经收到数据类的实例,他应该能够访问这个类的属性/方法.
如何才能做到这一点?有这种问题的模式吗?一个简短的样本将受到高度赞赏.提前致谢!
另一个解决方案是创建一个接口IData,并声明该Provider.GetData方法返回IData而不是Data.然后你可以将你的Data类嵌套在里面Provider.这样,Data即使同一程序集中的类也无法实例化您的类.这是一个例子:
public interface IData
{
// properties and methods
}
public class Provider
{
public IData GetData()
{
return new Data();
}
private class Data : IData
{
// your implementation
}
}
Run Code Online (Sandbox Code Playgroud)