Session 类没有构造函数,而是使用几个静态方法:getDefaultInstance(Properties p) ;
getDefaultInstance(Properties p, Authenticator a);
获取实例(属性 p);
getInstance(Properties p, Authenticator a);
以上所有返回会话。
从设计的角度来看,是不是要避免调用默认的无参数构造函数?还是您不能/不想使用构造函数的其他情况?
Session 类没有构造函数,而是使用几个静态方法:getDefaultInstance(Properties p) ;
getDefaultInstance(Properties p, Authenticator a);
获取实例(属性 p);
getInstance(Properties p, Authenticator a);
以上所有返回会话。
从设计的角度来看,是不是要避免调用默认的无参数构造函数?还是您不能/不想使用构造函数的其他情况?
静态工厂方法相对于构造函数有两个关键优势:
虽然 JavaMail 没有利用第一个(事实上 Session 是最终的),但它确实使用第二个为 getDefaultInstance 返回相同的 Session 对象。虽然这样做是为了支持特定的用例,但事实证明这是一个坏主意,会绊倒很多人,如此处所述。
你可以在这里得到一些信息什么是静态工厂方法?.
在Session
类的情况下,优点是您可以更改行为,只需将方法名称更改为getDefaultInstance
or getInstance
。并在需要时提供 Authentificator。