单件模式
2014-05-26 15:42
176 查看
有时候我们只需要某类一个对象,多个对象会产生不利的影响,如充当打印机:
这时候我们只需调用OnlyModle.GetInstance()就能得到唯一的对象
example:当我们需要牛奶时,最好需要一个没有水和奶的杯子,如果有就溢出了;且杯子有水和奶时我们才想喝,不能没水或者没奶时就不叫牛奶了。
我们看看效果:
结果为Ture
False
public class OnlyModle { private static OnlyModle _only; private OnlyModle() { } public static OnlyModle GetInstance() { if (_only == null) { _only=new OnlyModle(); } return _only; //Console.WriteLine("display get"); //return new OnlyModle(); //return null; } }
这时候我们只需调用OnlyModle.GetInstance()就能得到唯一的对象
example:当我们需要牛奶时,最好需要一个没有水和奶的杯子,如果有就溢出了;且杯子有水和奶时我们才想喝,不能没水或者没奶时就不叫牛奶了。
[System.Runtime.Remoting.Contexts.Synchronization] public class Cup : ContextBoundObject //这个是防止使用多线程时可能产生的错误 { private bool _water; private bool _milk; private static Cup _cup; private Cup() { _water = false; _milk = false; } public static Cup GetInstance() { if (_cup == null) { return new Cup(); } return _cup; } public void Add() { if (!HasWater()||!HasMilk()) { _water = true; _milk = true; //Console.WriteLine("1111"); } } public void Drink() { if (HasMilk() && HasWater()) { _milk = false; _water = false; } } public bool HasWater() { return _water; } public bool HasMilk() { return _milk; } }
我们看看效果:
OnlyModle a=OnlyModle.GetInstance(); Cup aaa = Cup.GetInstance(); aaa.Add(); Console.WriteLine(aaa.HasWater()); Cup bbb=Cup.GetInstance(); //bbb.Add(); // bbb.Add(); Console.WriteLine(bbb.HasWater()); // Console.WriteLine("my test"); Console.ReadLine();
结果为Ture
False
相关文章推荐
- 学习Singleton(单件)设计模式(一)
- 单件模式的C++模板实现
- 设计模式入门(1)------单件(Singleton)
- .NET设计模式(2):单件模式(Singleton Pattern)
- C#面向对象设计模式纵横谈(2): Singleton单件(创建型模式)
- 创建型模式——Singleton 单件模式
- 2. Singleton单件(创建型模式)
- 单件模式(singleton)
- 设计模式系列之单件
- 闲话单件模式
- 设计模式之-----单件(singleton)
- 创建型模式之单件模式
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- .NET设计模式(2):单件模式(Singleton Pattern)
- Dot Net设计模式—单件模式
- .NET中的设计模式二:单件模式 选择自 lane_cn 的 Blog
- 设计模式之单件(Singleton)的应用
- 设计模式单件(Singleton)---对象创建型模式
- 探索设计模式(2):单件模式(Singleton Pattern)
- [重复话题]最简单单件模式