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