许多Builder Pattern示例都将Builder其构建为对象的内部类。
这有一定道理,因为它表明了Builder构建的内容。但是,使用静态类型的语言,我们知道Builder构建的内容。
另一方面,如果Builder是内部类,则应了解Builder构建的类,而无需查看内部Builder。
而且,将构建器作为内部类可以减少导入的次数,因为外部类可以引用该构建器(如果您对此很在意)。
然后是一些实际的示例,其中Builder放在同一包中,而不是内部类(如)StringBuilder。您知道Builder 应该建立一个,String因为它名为so。
话虽这么说,我能想到的制作Builder内部类的唯一好理由是,您Builder无需知道类的名称或依赖命名约定就可以知道类的含义。例如,如果我StringBuilder是一个内部类,String我可能会知道它比我(推测性)早存在。
是否有其他原因可以使Builder内部类成为阶级,或者只是归结为偏好和仪式?