您的位置:首页 > 其它

2. Singleton单件(创建型模式)

2009-12-08 20:36 239 查看
模式分类
从目的来看:
– 创建型(Creational)模式:负责对象创建。
– 结构型(Structural)模式:处理类与对象间的组合。
– 行为型(Behavioral)模式:类与对象交互中的职责分配。
从范围来看:
– 类模式处理类与子类的静态关系。
– 对象模式处理对象间的动态关系。
动机(Motivation)
在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、
以及良好的效率。
如何绕过常规的构造器,提供一种机制来保证一个类只有
一个实例?
这应该是类设计者的责任,而不是使用者的责任。

意图(Intent)
保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF

结构(Structure)

代码

private void button1_Click(object sender, System.EventArgs e)
{
Class1 c1 = Class1.C1;
Class2 c2 = Class2.C2;
Class3 c3 = Class3.c3;
Class4 c4 = Class4.C4();
Class5 c5 = Class5.getClass5(3, 4);
Class6 c6 = Class6.C6(3, 4);

Class7 c7 = Class7.c7;
c7.Init(3, 4);
c7.x = 3;
c7.y = 4;

Class1 cc1 = Class1.C1;
Class2 cc2 = Class2.C2;
Class3 cc3 = Class3.c3;
Class4 cc4 = Class4.C4();
Class5 cc5 = Class5.getClass5(3, 4);
Class6 cc6 = Class6.C6(3, 4);

Class7 cc7 = Class7.c7;
cc7.Init(3, 4);
cc7.x = 9;
cc7.y = 10;

if (c1 == cc1 && c2 == cc2 && c3 == cc3 && c4 == cc4
&& c5 == cc5 && c6 == cc6 && c7 == cc7)
{
MessageBox.Show("Yes");
}
else
{
MessageBox.Show("No");
}

MessageBox.Show(c7.x.ToString());
MessageBox.Show(cc7.x.ToString());

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: