聊聊设计模式的工厂方法模式

tech2026-04-02  1

介绍

工厂设计模式中,有一个中心负责创建类的实例,提供给系统调用,跟现实生活中负责生产产品的工厂是类似的,所以称为工厂类。工厂设计模式分为简单工厂模式,工厂方法模式,和抽象工厂模式。这次说明的是工厂方法模式。

结构

定义一个产品类接口定义具体的产品类的不同实现定义一个工厂类接口定义具体的工厂类实现,每个实现对应上述每个产品的创建

类图结构

代码实现

定义产品类接口

public interface Product { void show(); }

定义具体的产品实现类

public class ProductA implements Product{ @Override public void show() { System.out.printf("ProductA is showing"); } } public class ProductB implements Product{ @Override public void show() { System.out.println("ProductB is showing"); } }

定义工厂类接口

public interface Factory { Product creatProduct(); }

定义具体的工厂实现类 工厂FactoryA负责创建A产品

public class FactoryA implements Factory{ @Override public Product creatProduct() { return new ProductA(); } }

工厂FactoryB负责创建B产品

public class FactoryB implements Factory{ @Override public Product creatProduct() { return new pattern.factory.ProductB(); } }

场景类 这里场景类是通过创建具体的工厂,工厂在创建自己负责的产品,而不是一个工厂来创建多个产品。从而在后续需要新增一个产品时只需要扩展具体的产品类和工厂类,不需要修改原有的工厂类,做到了开闭原则。

public class Client { public static void main(String[] args) { Factory factoryA = new FactoryA(); Factory factoryB = new FactoryB(); Product productA = factoryA.creatProduct(); Product productB = factoryB.creatProduct(); productA.show(); productB.show(); } }

优缺点

工厂方法模式符合开闭原则,对修改闭合,对扩展开放,系统架构清晰,工厂的职责清晰。如果需要扩展产品类时,需要同时增加产品实现类和工厂实现类,会增加系统复杂性。

最新回复(0)