0

Session 类没有构造函数,而是使用几个静态方法:getDefaultInstance(Properties p) ;

getDefaultInstance(Properties p, Authenticator a);

获取实例(属性 p);

getInstance(Properties p, Authenticator a);

以上所有返回会话。

从设计的角度来看,是不是要避免调用默认的无参数构造函数?还是您不能/不想使用构造函数的其他情况?

4

2 回答 2

1

静态工厂方法相对于构造函数有两个关键优势:

  1. 它们可以返回目标类的子类。
  2. 他们不必每次都创建一个新实例。

虽然 JavaMail 没有利用第一个(事实上 Session 是最终的),但它确实使用第二个为 getDefaultInstance 返回相同的 Session 对象。虽然这样做是为了支持特定的用例,但事实证明这是一个坏主意,会绊倒很多人,如此所述。

于 2012-12-17T19:34:32.303 回答
0

你可以在这里得到一些信息什么是静态工厂方法?.

Session类的情况下,优点是您可以更改行为,只需将方法名称更改为getDefaultInstanceor getInstance。并在需要时提供 Authentificator。

于 2012-12-17T17:00:11.957 回答