小编典典

构造函数与工厂方法

all

建模类时,首选的初始化方式是什么:

  1. 构造函数,或
  2. 工厂方法

使用其中任何一个的考虑因素是什么?

在某些情况下,如果无法构造对象,我更喜欢使用返回 null
的工厂方法。这使代码整洁。在采取替代操作之前,我可以简单地检查返回的值是否不为空,而不是从构造函数中抛出异常。(我个人不喜欢例外)

比如说,我在一个需要 id 值的类上有一个构造函数。构造函数使用此值从数据库中填充类。在具有指定 id 的记录不存在的情况下,构造函数会抛出
RecordNotFoundException。在这种情况下,我将不得不将所有此类类的构造包含在 try..catch 块中。

与此相反,我可以在那些类上有一个静态工厂方法,如果找不到记录,它将返回 null。

在这种情况下,构造函数或工厂方法哪种方法更好?


阅读 59

收藏
2022-06-29

共1个答案

小编典典

使用工厂方法模式

  • 一个类不能预测它必须创建的对象类
  • 一个类希望它的子类指定它创建的对象
  • 类将责任委托给几个助手子类之一,并且您希望本地化哪个助手子类是委托的知识
2022-06-29