如果我有一个Java class SpecificDialog
,并且在该类中有一个public static class Builder
用于构建SpecificDialog
的对象,则Builder
位于SpecificDialog
内的原因是因为它在逻辑上可以仅用于构建SpecifcDialogs。这是主要原因吗?
但是,如果Builder
在SpecificDialog
内部,则我的SpecificDialog
可以访问private
的每个Builder
字段/成员。这可能是不可取的,因为我可能会无意中从外部Builder's
修改某些此类私有SpecificDialog
字段。
对此无能为力吗?如果没有,我是否可以理解这不是大问题?
最佳答案
无论您选择哪种设计,您始终可以无意间做一些不应该做的事情。使构建器成为它构建的类的静态内部类是一个常见的习惯用法,正是因为这个外部类可以访问构建器的私有字段,所以才使用它。就像私有字段或方法一样,将生成器视为外部类的组成部分,并确保该类及其生成器的行为符合预期。