|
|
1
2
据我所知,这不能真正做到,因为C是如何处理对象实例的。为了调用构造函数,必须实际创建实例,并且不能从构造函数“返回”另一个对象。 我能想到的最好的事情(除了使用工厂方法)是将类内部视为一个单例,并创建“虚拟”实例,这些实例在创建时都只指向原始实例。例如,在您的构造函数中,您将检查singleton是否已经初始化,如果没有,则初始化它,然后基本上将每个实例的方法和属性代理回singleton。 在这个实现中,singleton甚至不必是同一个类,但是如果您想保持包含内容的话,可以这样做。
更新:
这种方法的一个缺点是尽管每个实例
表现
作为单一实例,它仍然有自己的对象引用,因此您可能还希望重写
|
|
|
2
7
你可以做一个代理(编辑:正如汤姆在下面指出的,正确的设计模式是单态的):
…
MY1!=my2,但my1.dostuff()调用与my2.dostuf()相同的方法实例 如果只对一个接口进行编程,这将进一步简化。 编辑:通过使_actual protected internal和重写myclass.equals(object obj)来检查这一点,可以部分解决相等问题。_actual==obj._actual |
|
|
3
4
我相信单态模式会给你所需要的: “ 单态给了我们在单态中如此珍视的状态的奇异性,但是没有伴随它而来的所有静态头痛。” |
|
|
4
0
我想你可以用远程处理来处理一些事情。 更新: 更好的方法是在结构或轻量级类中包装适当的单例类。 |
|
|
5
0
将singleton创建为静态成员,并使所有方法都访问单个静态实例。
(这实际上是Java代码,但C是足够相似的,我想。:) |
|
|
6
0
我看不出您怎么做,因为构造函数不使用返回语句。您可以将所有相关链接克隆到singleton,但是它会有局部变量的本地副本,并且非常混乱。 相反,让构造函数检查singleton是否被实例化,如果它已经被实例化,则抛出异常,或者向正在使用旧样式代码的开发人员记录警告。 |
|
|
7
0
用一个静态函数返回一个使用new关键字的对象怎么样?
如果我没弄错的话,你很容易完全控制物体的创造。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |