Java: null object Pattern
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 空对象模式 null object Pattern
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc Vehicle.java
* Interface
* Record
* Annotation
* Enum
* */
package com.javapatterns.nullobject;
/**
*
* @version 1.0
* @author geovindu
* */
public interface Vehicle {
/**
*
*
* */
void travel();
}
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 空对象模式 null object Pattern
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc Bus.java
* Interface
* Record
* Annotation
* Enum
* */
package com.javapatterns.nullobject;
/**
*
* @version 1.0
* @author geovindu
* */
public class Bus implements Vehicle{
/**
*
*
* */
public static int busCount = 0;
/**
*
*
* */
public Bus()
{
busCount++;
}
/**
*
*
* */
@Override
public void travel()
{
System.out.println("让我们乘公共汽车旅行吧");
}
}
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 空对象模式 null object Pattern
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc Train.java
* Interface
* Record
* Annotation
* Enum
* */
package com.javapatterns.nullobject;
/**
*
* @version 1.0
* @author geovindu
* */
public class Train implements Vehicle{
/**
*
*
* */
public static int trainCount = 0;
/**
*
*
* */
public Train()
{
trainCount++;
}
/**
*
*
* */
@Override
public void travel()
{
System.out.println("让我们乘火车旅行吧");
}
}
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
* 空对象模式 null object Pattern
* 历史版本: JDK 14.02
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc NullVehicle.java
* Interface
* Record
* Annotation
* Enum
* */
package com.javapatterns.nullobject;
/**
*
* @version 1.0
* @author geovindu
* */
public class NullVehicle implements Vehicle{
//Early initialization
/**
*
*
* */
private static NullVehicle instance = new NullVehicle();
/**
*
*
* */
public static int nullVehicleCount;
//Making constructor private to prevent the use of "new"
/**
*
*
* */
private NullVehicle()
{
nullVehicleCount++;
System.out.println(" 已创建空车辆对象。目前零车辆计数为: "+nullVehicleCount);
}
// Global point of access.
/**
*
*
* */
public static NullVehicle getInstance()
{
//System.out.println("We already have an instance now. Use it.");
return instance;
}
/**
*
*
* */
@Override
public void travel()
{
//Do Nothing
}
}
调用:
//空对象模式 null object Pattern
System.out.println("***空对象模式 Null Object Pattern Demo***\n");
String input = "虚拟输入开始处理";
int totalObjects = 0;
Scanner scanner;
while(!input.toLowerCase().contains("exit"))
{
System.out.println("输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序 ");
scanner=new Scanner(System.in);
if(scanner.hasNextLine())
{
input = scanner.nextLine();
}
Vehicle vehicle = null;
switch (input.toLowerCase())
{
case "a":
vehicle = new Bus();
break;
case "b":
vehicle = new Train();
break;
case "exit":
System.out.println("关闭应用程序");
vehicle = NullVehicle.getInstance();
break;
default:
System.out.println("您是不是要找:");
vehicle = NullVehicle.getInstance();
//break;
}
totalObjects = Bus.busCount + Train.trainCount+NullVehicle.nullVehicleCount;
//A immediate remedy
//if(vehicle !=null)
//{
vehicle.travel();
//}
System.out.println("系统中创建的对象总数为 : "+ totalObjects);
}
输出:
***空对象模式 Null Object Pattern Demo*** 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序 a 已创建空车辆对象。目前零车辆计数为: 1 让我们乘公共汽车旅行吧 系统中创建的对象总数为 : 2 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序 b 让我们乘火车旅行吧 系统中创建的对象总数为 : 3 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序 a 让我们乘公共汽车旅行吧 系统中创建的对象总数为 : 4 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序 b 让我们乘火车旅行吧 系统中创建的对象总数为 : 5 输入您的选择(输入“a”代表公共汽车,输入“b”代表火车。输入'exit'关闭应用程序
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号