设计模式之工厂模式
在软件开发中,面对复杂的系统结构和繁琐的代码实现,我们通常都会采用设计模式来提高软件开发的效率和质量。设计模式是指在某些经典问题上,经过多次实践、总结和抽象出来的一系列通用的解决方案。其中,工厂模式是比较常见的一种设计模式。
一、什么是工厂模式
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式能够在创建对象时把这个过程封装起来,从而使客户端不需要知道具体创建的逻辑。通俗一点说,就是有一个工厂类,根据不同的需求生产不同的产品。工厂模式的应用场景比较广泛,例如 JDK 中的 Calendar 和 NumberFormat 类,还有 Spring 框架中的 BeanFactory 和 ApplicationContext。韩国乒乓球
二、工厂模式的分类
工厂模式一般分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。
1. 简单工厂模式
简单工厂模式又叫静态工厂方法,它是指由一个工厂类负责创建多种类型的对象。客户端只需要提供必要的参数,由工厂类根据参数来生成相应的对象。简单工厂模式的优点是生产出的对象在客户端中有些封装,客户端只需要知道自己需要什么产品即可,而不需要知道产品的具体实现细节。
向往温暖
以汽车生产为例来说明简单工厂模式的实现。我们假设汽车生产线只生产轿车、越野车和卡车三种类型的车辆,我们可以使用简单工厂模式实现这个过程。
首先,定义一个车辆抽象类 Vehicle,包含一个 abstract 方法 run,表示车辆运行的方法。然后,分别定义 Car、SUV 和 Truck 三个子类,它们分别实现了 run 方法。
表达爱意的花
abstract class Vehicle {
public abstract void run();
}
class Car extends Vehicle {
public void run() {
System.out.println("轿车在高速公路上行驶!");
}
}
class SUV extends Vehicle {
public void run() {
System.out.println("越野车在山路上行驶!");
}
}
class Truck extends Vehicle {
public void run() {
System.out.println("卡车在某地工地上拉货!");
流水不腐户枢不蠹是什么意思 }
}
接下来,我们创建一个简单的工厂类 CarFactory,它包含一个静态方法 getVehicle,根据客户端传递的参数来创建不同的类型车辆。文明宣传标语
class VehicleFactory {
public static Vehicle getVehicle(String type) {
if ("car".equals(type)) {
return new Car();
}
el if ("suv".equals(type)) {
return new SUV();
}
el if ("truck".equals(type)) {
return new Truck();
}
el {
throw new RuntimeException("unsupported vehicle type: " + type);
}
}
}
钢琴符号
这样,在客户端需要创建车辆时,只需要使用 Vehicle("car") 来获取相应的车辆对象,而无需知道 Car、SUV 和 Truck 车辆类的具体实现。
排球赛新闻稿盆栽兰花养殖方法2. 工厂方法模式
工厂方法模式是比简单工厂模式更为复杂的一种工厂模式,它将具体产品的创建过程交给了子类来完成。与简单工厂模式不同,工厂方法模式有一个抽象的工厂类,它定义了一个抽象工厂方法用于生产产品。在客户端中需要创建产品时,客户端调用抽象工厂方法,由具体的工厂子类来创建相应的产品对象。工厂方法模式的优点是工厂和产品的解耦,使得产品更加具有扩展性和灵活性。