- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用这段代码:
public class MyClass
{
public int Number;
private static MyClass myClass;
...
public MyClass GetInstance()
{
...
return myClass;
}
}
有没有一种方法可以同时支持以下两种说法?
MyClass.Number = 5;
其中 MyClass 检索用于存储 Number 值的静态类
和
MyClass myLocalClass = new MyClass();
或者脱离 Singleton 设计模式的替代方案,因为我也希望能够创建一个实例。
感谢您的关注!
最佳答案
您正在寻找的是 MonoState图案。我将引用 Robert C. Martin 的 C# 中的敏捷原则、模式和实践
The MONOSTATE pattern is another way to achieve singularity. It works through a completely different mechanism.
The first test function simply describes an object whose x variable can be set and retrieved. But the second test case shows that two instances of the same class behave as though they were one. If you set the x variable on one instance to a particular value, you can retrieve that value by getting the x variable of a different instance. It's as hough the two instances are simply different names for the same object.
因此您可以实例化 2 个或更多类,但它们都将共享相同的值。
下面是一个实现的例子:
public class Monostate
{
private static int itsX;
public int X
{
get { return itsX; }
set { itsX = value; }
}
}
还有测试,所以你可以看到它是如何使用的:
using NUnit.Framework;
[TestFixture]
public class TestMonostate
{
[Test]
public void TestInstance()
{
Monostate m = new Monostate();
for (int x = 0; x < 10; x++)
{
m.X = x;
Assert.AreEqual(x, m.X);
}
}
[Test]
public void TestInstancesBehaveAsOne()
{
Monostate m1 = new Monostate();
Monostate m2 = new Monostate();
for (int x = 0; x < 10; x++)
{
m1.X = x;
Assert.AreEqual(x, m2.X);
}
}
}
关于c# - 单例:两全其美(想实例化类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305350/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!