详解 java 工厂模式,定义是什么,怎么实现,给一个代码示例,通常在什么情况下使用,跟抽象工厂模式的区别
时间: 2024-03-03 15:53:30 浏览: 83
Java工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,以便在不暴露对象创建逻辑的情况下,对客户端代码进行解耦。在这种模式中,我们使用工厂方法来创建对象。
定义:
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,以便在不暴露对象创建逻辑的情况下,对客户端代码进行解耦。
怎么实现:
1. 定义一个接口或抽象类,用于创建对象。
2. 实现接口或抽象类的具体类,这些类负责创建具体的对象。
3. 创建工厂类,该类将创建具体对象的责任委托给具体的类。
4. 最后,客户端使用工厂类来创建对象。
代码示例:
```
// 定义一个接口
interface Car {
void drive();
}
// 实现接口的具体类
class Benz implements Car {
@Override
public void drive() {
System.out.println("Benz is driving.");
}
}
class Bmw implements Car {
@Override
public void drive() {
System.out.println("Bmw is driving.");
}
}
// 工厂类
class CarFactory {
public Car createCar(String carType) {
if (carType.equals("Benz")) {
return new Benz();
} else if (carType.equals("Bmw")) {
return new Bmw();
} else {
return null;
}
}
}
// 客户端
public class Main {
public static void main(String[] args) {
CarFactory carFactory = new CarFactory();
Car car1 = carFactory.createCar("Benz");
car1.drive();
Car car2 = carFactory.createCar("Bmw");
car2.drive();
}
}
```
通常在什么情况下使用:
工厂模式通常用于以下情况:
1. 当类不知道必须创建哪种对象时。
2. 当类希望由其子类来指定所创建的对象时。
3. 当类将对象的创建委托给多个帮助子类中的某一个,并且希望根据运行时上下文动态地创建对象时。
与抽象工厂模式的区别:
工厂模式和抽象工厂模式都是创建型设计模式,它们的区别在于:
1. 工厂模式只有一个工厂类,它负责创建一类对象;而抽象工厂模式有多个工厂类,每个工厂类负责创建一类对象。
2. 工厂模式只有一个方法,它返回一个对象;而抽象工厂模式有多个方法,每个方法返回一组对象。
3. 工厂模式创建的是单个对象;而抽象工厂模式创建的是一组相关的对象。
阅读全文