question 为什么使用构造函数 + init 函数? 答: 之所以使用 init 函数是为了避免构造函数抛出异常 init 必须在单例构造完成后立马执行,保证 init 只执行一次 构造单例的时候需要传递参数怎么办? 答: 单例构造时是需要传递参数的,但每个参数都是固定的(当参数不同时,构造出来的就是不同的实例,也就不是单例了),自然就是无参的了 固定参数通常从配置文件中读出,这样可以保证当固定参数发生变化时,无需重新编译软件