标签:style c class blog code java
有时候我们只需要某类一个对象,多个对象会产生不利的影响,如充当打印机:
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
标签:style c class blog code java
原文地址:http://www.cnblogs.com/junyong/p/3753218.html