参考如下
通常建立对象
新建一个Car实体类:
public class Car {
public void run(){
System.out.println("Car在雨中行驶");
}
}
新建一个Test类:
public class Test {
public static void main(String[] args) {
Car car = new Car();
car.run();
}
}
运行结果:
Car在雨中行驶
使用工厂模式建立对象
Car实体类:
public class Car {
private Car(){}
public static Car getInstance(){
return new Car();
}
public void run(){
System.out.println("Car在雨中行驶");
}
}
工厂生产对象
Test类:
public class Test {
public static void main(String[] args) {
Car car = Car.getInstance();
car.run();
}
}
运行结果:
Car在雨中行驶
这里是使用工厂模式获取Car对象
需求:只有一辆车用来驾驶
这里使用单例实现:
Car类:
public class Car {
private Car(){}
private static Car car = new Car();
public static Car getInstance(){
return car;
}
public void run(){
System.out.println("Car在雨中行驶");
}
}
在这里创建私有静态对象,并返回,实现单例。
Test类:
public class Test {
public static void main(String[] args) {
Car car = Car.getInstance();
Car car2 = Car.getInstance();
if(car == car2) System.out.println("same car");
car.run();
}
}
运行结果:
same car
Car在雨中行驶
这样就用单例完成了只能使用一辆车
需求2:只能使用固定的2辆车
使用多例来实现:
Car类:
import java.util.ArrayList;
import java.util.List;
public class Car {
private String name;
private Car(){}
private static List<Car> cars = new ArrayList<Car>();
public static List<Car> getInstance(){
Car car1 = new Car();
car1.setName("奔驰");
Car car2 = new Car();
car2.setName("宝马");
cars.add(car1);
cars.add(car2);
return cars;
}
public void run(){
System.out.println("Car在雨中行驶");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在这里把私有静态对象改为对象的私有静态集合,实现多例。
Test类:
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Car> cars = Car.getInstance();
for(int i=0; i<2; i++){
System.out.println(cars.get(i).getName());
}
}
}
运行结果:
奔驰
宝马
这样就完成了只能使用固定的两辆车的需求。
数据库连接池也是使用多例的概念。
网友评论