/// <summary> /// 空对象模式 null object pattern /// geovin,Geovin Du eidt /// </summary> interface IVehicle { void Travel(); } /// <summary> /// Bus class /// </summary> class Bus : IVehicle { /// <summary> /// /// </summary> public static int busCount = 0; /// <summary> /// /// </summary> public Bus() { busCount++; } /// <summary> /// /// </summary> public void Travel() { Console.WriteLine("让我们乘公共汽车旅行吧."); } } /// <summary> /// Train class /// </summary> class Train : IVehicle { /// <summary> /// /// </summary> public static int trainCount = 0; /// <summary> /// /// </summary> public Train() { trainCount++; } /// <summary> /// /// </summary> public void Travel() { Console.WriteLine("让我们乘坐火车旅行吧."); } } /// <summary> /// NullVehicle class /// </summary> class NullVehicle : IVehicle { /// <summary> /// /// </summary> private static readonly NullVehicle instance = new NullVehicle(); /// <summary> /// /// </summary> private NullVehicle() { nullVehicleCount++; } /// <summary> /// /// </summary> public static int nullVehicleCount; /// <summary> /// /// </summary> public static NullVehicle Instance { get { return instance; } } /// <summary> /// /// </summary> public void Travel() { //Do Nothing } }
调用:
// 2//空对象模式 Console.WriteLine("***空对象模式 2 Null Object Pattern .***\n"); string duinput = String.Empty; int dutotalObjects = 0; while (duinput != "exit") { Console.WriteLine("输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 "); duinput = Console.ReadLine(); GeovinDu.IVehicle duvehicle = null; switch (duinput) { case "a": duvehicle = new GeovinDu.Bus(); break; case "b": duvehicle = new GeovinDu.Train(); break; case "exit": Console.WriteLine("关闭应用程序."); duvehicle = NullVehicle.Instance; break; default: Console.WriteLine("请提供正确的输入(a/b/exit .)"); duvehicle = NullVehicle.Instance; break; } dutotalObjects = GeovinDu.Bus.busCount + GeovinDu.Train.trainCount + NullVehicle.nullVehicleCount; //No need to do null check now. //if (vehicle != null) duvehicle.Travel(); //} Console.WriteLine("系统中创建的对象总数 ={0}", dutotalObjects); } Console.ReadKey();
输出:
***空对象模式 2 Null Object Pattern .*** 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 a 让我们乘公共汽车旅行吧. 系统中创建的对象总数 =2 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 b 让我们乘坐火车旅行吧. 系统中创建的对象总数 =3 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 c 请提供正确的输入(a/b/exit .) 系统中创建的对象总数 =3 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 a 让我们乘公共汽车旅行吧. 系统中创建的对象总数 =4 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 a 让我们乘公共汽车旅行吧. 系统中创建的对象总数 =5 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序 b 让我们乘坐火车旅行吧. 系统中创建的对象总数 =6 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入“exit”退出应用程序