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(涂聚文)
浙公网安备 33010602011771号