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());
}
从目的来看:
– 创建型(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());
}
相关文章推荐
- 2. Singleton单件(创建型模式)
- 2. Singleton单件(创建型模式)
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- 创建型模式:Singleton(单件)
- [转]【创建型】 之 单件模式
- 创建型模式-单件(Singleton)
- singleton(单件)-对象创建型模式
- 创建型模式:单件模式
- 设计模式笔记--创建型模式之五--单件 Singleton
- 设计模式--创建型-Singleton(单例单件)
- 设计模式(六):Singleton 单件模式 -- 创建型模式
- (第Ⅱ部分 创建型模式篇) 第1章 单件模式(Singleton Pattern)
- 设计模式笔记(2)---单件模式(创建型)
- (第Ⅱ部分 创建型模式篇) 第1章 单件模式(Singleton Pattern)
- Singleton 单件(创建型模式)
- 创建型模式---单件模式(Singleton Pattern)
- [设计模式] 设计模式面面观(3):单件模式(Singletion)-创建型模式
- 设计模式单件(Singleton)---对象创建型模式
- Singleton patterns 单件(创建型模式)
- Singleton 单件(创建型模式)