继承使用静态内部类Builder构建的类

时间:2011-12-14 12:25:43

标签: java design-patterns builder-pattern

我有一个Class A,其中有很多成员变量。为了使它在构造期间不可变并验证成员变量,我将其构造函数设为私有,并使用内部公共静态构建器类(ClassABuilder)来构建它。 (Joshua Bloch Effective Java,第2项)。

现在我不明白的是,其他程序员如何将Class A子类化以实现他们自己的特定行为。我从书中读到了Builder Pattern的缺点,但没有看到提到的子类化。我错过了什么吗?这周围有优雅的方式吗?

构造函数protected是我的一个想法,但它仍然会采用公共静态ClassABuilder,那么如何在子类中添加新的成员变量?

2 个答案:

答案 0 :(得分:2)

ClassBBuilder中创建内部公共静态ClassB构建器,该构建器是ClassABuilder

的子类

答案 1 :(得分:0)

为什么A的构造函数使用Buildler作为参数。当用户调用Builder.create时,构建器必须初始化A的默认受保护构造函数,然后只需设置A的字段。因此,您可以轻松地从B

继承课程A