如果我有一个Java class SpecificDialog,并且在该类中有一个public static class Builder用于构建SpecificDialog的对象,则Builder位于SpecificDialog内的原因是因为它在逻辑上可以仅用于构建SpecifcDialogs。这是主要原因吗?

但是,如果BuilderSpecificDialog内部,则我的SpecificDialog可以访问private的每个Builder字段/成员。这可能是不可取的,因为我可能会无意中从外部Builder's修改某些此类私有SpecificDialog字段。

对此无能为力吗?如果没有,我是否可以理解这不是大问题?

最佳答案

无论您选择哪种设计,您始终可以无意间做一些不应该做的事情。使构建器成为它构建的类的静态内部类是一个常见的习惯用法,正是因为这个外部类可以访问构建器的私有字段,所以才使用它。就像私有字段或方法一样,将生成器视为外部类的组成部分,并确保该类及其生成器的行为符合预期。

09-27 18:16