简单工厂模式(Simple Factory Pattern)
简单工厂模式的核心思想是通过一个工厂类,根据提供的参数来决定创建哪一个具体的产品类实例 。
这个模式通常用于产品种类较少,且不经常变化的场景。
java
interface Product {
void create();
}
class ProductA implements Product {
@Override
public void create() {
System.out.println("我是产品A");
}
}
class ProductB implements Product {
@Override
public void create() {
System.out.println("我是产品B");
}
}
// 工厂类
class Factory {
// 一个方法,根据类型返回不同的实例
public Product getProduct(int type) {
switch (type) {
case 1:
return new ProductA();
case 2:
return new ProductB();
default:
return null;
}
}
}
核心点:通过一个工厂类来根据外部传入的参数,返回不同类型的产品实例。
缺点:简单工厂模式初期非常方便,但它会导致工厂类过于庞大,且不易扩展。
工厂方法模式(Factory Method Pattern)
简单工厂模式的基础上进行的改进。它将产品的实例化过程从工厂类中抽离出来,交由具体的子类来实现,达到了更加灵活和可扩展的效果。
java
// 将原本的工厂类抽象乎或者做成接口
abstract class Factory {
// 由子类实现具体的产品创建
abstract Product getProduct();
}
// 子类来实现生产不同的产品
class ConcreteFactoryA extends Factory {
@Override
public Product getProduct() {
return new ProductA();
}
}
// 子类来实现生产不同的产品
class ConcreteFactoryB extends Factory {
@Override
public Product getProduct() {
return new ProductB();
}
}
核心点:将产品的实例化逻辑从工厂类中抽象出来,由具体的子类来实现。
优点:新产品的添加变得更加灵活,扩展性更强。引入新产品时,只需要创建新的具体工厂类,而不需要修改原有的代码。