CSharp: null object pattern in donet core 3
/// <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”退出应用程序
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)