c# - 仅从一个地方进行类实例化的模式?

标签 c# .net design-patterns class-design

C#.Net 4.0

我想知道如何才能拥有一个只能从一个地方实例化的类。一个例子:

我有一个Provider 类。此类公开了一个名为 GetData 的方法。当调用 GetData 时,Provider 将实例化一个 Data 类,填充并返回它。 Data 类不能由除 Provider 之外的任何人实例化,因此访问数据的唯一方法是通过 Provider。一旦调用了 GetData 并且调用者收到了 Data 类实例,他应该能够访问该类的属性/方法。

如何做到这一点?是否有解决此类问题的模式?一个简短的样本将不胜感激。提前致谢!

最佳答案

听起来您正在寻找 factory pattern :

The factory pattern is a creational design pattern used in software development to encapsulate the processes involved in the creation of objects.

基本上,您的 Provider 类是控制 Data 类实例创建的工厂。

你可以做的一件事是将这两种类型放在它们自己的程序集中,并使 Data 的构造函数成为 internal 但类本身 公开。这意味着任何引用程序集的人都将被迫使用 Provider 类来创建 Data 的实例(当然,除非他们使用反射)。

关于c# - 仅从一个地方进行类实例化的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617470/

相关文章:

c# - 使用自定义样式隐藏 View 上的验证错误边框和文本

c# - Windows 窗体进度条 : Easiest way to start/stop marquee?

.net - VB.NET 语言和什么都没有 : why is it the way it is?

c# - 进度条没有显示进度结果?

c# - 数组和线程安全访问

java - 命令模式与反射

design-patterns - 什么是反模式?

c# - 如何使用 EWL 将自定义样式表添加到 Web 应用程序?

c# - MessageBox出现在wpf窗口的中央

Java模式来构建必须设置任何一个字段的对象?