返回
工厂模式:种类区分、原理介绍与代码演示
后端
2024-02-25 04:47:07
简单工厂
简单工厂模式是最简单的一种工厂模式。它通过一个工厂类来创建对象,而无需关心具体对象的创建过程。简单工厂模式的优点是简单易用,缺点是缺乏灵活性。
工厂方法
工厂方法模式是一种更加灵活的工厂模式。它通过一个抽象工厂类来定义创建对象的接口,而具体的创建过程则由子类来实现。工厂方法模式的优点是灵活性强,缺点是增加了类的数量。
抽象工厂
抽象工厂模式是最抽象的一种工厂模式。它通过一个抽象工厂类来定义创建一系列相关对象的接口,而具体的创建过程则由子类来实现。抽象工厂模式的优点是灵活性最强,缺点是增加了类的数量。
三种工厂模式的比较
工厂模式 | 优点 | 缺点 |
---|---|---|
简单工厂 | 简单易用 | 缺乏灵活性 |
工厂方法 | 灵活性强 | 增加了类的数量 |
抽象工厂 | 灵活性最强 | 增加了类的数量 |
代码示例
// 简单工厂模式
class SimpleFactory {
public static Product createProduct(String type) {
switch (type) {
case "A":
return new ProductA();
case "B":
return new ProductB();
default:
throw new IllegalArgumentException("Invalid product type: " + type);
}
}
}
class ProductA implements Product {
@Override
public void doSomething() {
System.out.println("ProductA do something");
}
}
class ProductB implements Product {
@Override
public void doSomething() {
System.out.println("ProductB do something");
}
}
// 工厂方法模式
interface Factory {
Product createProduct();
}
class FactoryA implements Factory {
@Override
public Product createProduct() {
return new ProductA();
}
}
class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ProductB();
}
}
// 抽象工厂模式
interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
class ConcreteFactoryA implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ProductA();
}
@Override
public ProductB createProductB() {
return new ProductB();
}
}
class ConcreteFactoryB implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ProductA();
}
@Override
public ProductB createProductB() {
return new ProductB();
}
}
总结
工厂模式是一种非常重要的设计模式,它可以帮助我们创建更加灵活和可扩展的应用程序。工厂模式根据抽象程度可分为简单工厂、工厂方法和抽象工厂三种。每种模式都有其优缺点,我们可以根据具体的需求选择合适的工厂模式。