首页/开发/代码质量与评审速查/静态工厂方法(Static Factory Method 惯用法)
设计原则与模式62 条

静态工厂方法(Static Factory Method 惯用法)

用命名静态方法代替构造器:方法名可表达意图(of、valueOf、parse、create)、可缓存实例、可返回子类型;是 GoF 工厂方法在语言层面的常用变体。

命名惯例of / valueOf / parse / format / create
收益意图显式、实例可控、可返回子类型
对比构造函数重载靠参数类型区分,可读性差

Java 示例

Java 示例
Money usd = Money.of("USD", 10);
Instant t = Instant.parse("2026-10-12T00:00:00Z");
List<String> empty = List.of();

易错点

  • 静态工厂与构造器行为不一致:调用方难以预期
  • 缓存实例后可被修改:享元被破坏,应返回不可变对象

数据来源与参考

  • Joshua Bloch《Effective Java》· 条目「考虑用静态工厂方法代替构造器」
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌