Session class没有构造函数,而是使用几个静态方法: getDefaultInstance(Properties p);
getDefaultInstance(属性p,身份验证者a);
getInstance(属性p);
getInstance(属性p,身份验证者a);
以上所有返回会话。
从设计的角度来看,是否要避免调用默认的无参数构造函数? 或者是否有其他类似的情况,你不能/不想使用构造函数?
答案 0 :(得分:1)
静态工厂方法比构造函数有两个主要优点:
虽然JavaMail没有利用第一个(实际上Session是final),但它确实使用第二个为getDefaultInstance返回相同的Session对象。虽然这样做是为了支持特定的用例,但如同here所描述的那样,对很多人来说这是一个坏主意。
答案 1 :(得分:0)
您可以在What are static factory methods?获取一些信息。
如果是Session
类,则可以更改仅将方法名称更改为getDefaultInstance
或getInstance
的行为。如果需要,请提供Authentificator。