通过工厂模式,我们可以实现创建不同类型的汽车对象,而无需在客户端代码中直接实例化汽车对象。这样可以让客户端代码更加简洁、可维护和灵活。
一、概述
工厂模式是一种创建对象的设计模式。它允许客户端通过调用工厂方法来创建对象,而无需直接实例化对象。这样可以减少代码中的重复,提高代码的可维护性和灵活性。工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式三种形式。其中简单工厂模式适用于创建单一类型的对象,工厂方法模式适用于创建一组相关的对象,而抽象工厂模式则适用于创建多个相关对象的系列。
假设我们有一个简单的需求:根据客户端传递的参数创建不同类型的汽车对象。我们可以使用工厂模式来实现这个功能。
首先,定义一个抽象类Car和它的三个具体子类:Benz、BMW和Audi。
// 抽象类
public abstract class Car {
public abstract void run();
}
// 具体子类
public class Benz extends Car {
@Override
public void run() {
System.out.println("Benz is running.");
}
}
public class BMW extends Car {
@Override
public void run() {
System.out.println("BMW is running.");
}
}
public class Audi extends Car {
@Override
public void run() {
System.out.println("Audi is running.");
}
}
接下来,实现一个CarFactory工厂类,根据客户端传递的参数创建对应的汽车对象并返回。
public class CarFactory {
public static Car createCar(String carType) {
if (carType.equalsIgnoreCase("Benz")) {
return new Benz();
} else if (carType.equalsIgnoreCase("BMW")) {
return new BMW();
} else if (carType.equalsIgnoreCase("Audi")) {
return new Audi();
} else {
return null;
}
}
}
最后,在客户端代码中调用工厂方法来创建汽车对象。
public class Client {
public static void main(String[] args) {
Car car1 = CarFactory.createCar("Benz");
car1.run(); // 打印 "Benz is running."
Car car2 = CarFactory.createCar("BMW");
car2.run(); // 打印 "BMW is running."
Car car3 = CarFactory.createCar("Audi");
car3.run(); // 打印 "Audi is running."
}
}
通过工厂模式,我们可以实现创建不同类型的汽车对象,而无需在客户端代码中直接实例化汽车对象。这样可以让客户端代码更加简洁、可维护和灵活。