创建一个地球类(两种单例模式) 属性:半径、质量 方法:定义构造方式,并在构造方法中打印“地球诞生了” 定义一个自转的方法:输出地球自传中 定义一个公转的方法:输出地球公转中 编写测试类,新建三个地球,看是否是同一个地球。
时间: 2024-03-17 19:46:48 浏览: 13
以下是两种不同的单例模式实现地球类:
1. 饿汉式单例模式
```java
public class Earth {
private static final Earth instance = new Earth();
private final double radius;
private final double mass;
private Earth() {
System.out.println("地球诞生了");
radius = 6371;
mass = 5.97e24;
}
public static Earth getInstance() {
return instance;
}
public void rotate() {
System.out.println("地球自传中");
}
public void revolve() {
System.out.println("地球公转中");
}
}
```
2. 懒汉式单例模式
```java
public class Earth {
private static Earth instance;
private final double radius;
private final double mass;
private Earth() {
System.out.println("地球诞生了");
radius = 6371;
mass = 5.97e24;
}
public static synchronized Earth getInstance() {
if (instance == null) {
instance = new Earth();
}
return instance;
}
public void rotate() {
System.out.println("地球自传中");
}
public void revolve() {
System.out.println("地球公转中");
}
}
```
测试类:
```java
public class EarthTest {
public static void main(String[] args) {
Earth earth1 = Earth.getInstance();
Earth earth2 = Earth.getInstance();
Earth earth3 = Earth.getInstance();
System.out.println(earth1 == earth2); // true
System.out.println(earth2 == earth3); // true
earth1.rotate(); // 地球自传中
earth2.revolve(); // 地球公转中
earth3.rotate(); // 地球自传中
}
}
```
以上两种单例模式实现都可以保证只有一个地球实例被创建,且在创建时打印“地球诞生了”。测试类创建了三个地球实例,但是它们都是同一个实例,所以输出结果都是“地球自传中”和“地球公转中”。