我有一个 Class A
,有很多成员变量 . 为了使它在构造期间不可变并验证成员变量,我将其构造函数设为私有,并使用内部公共静态构建器类( ClassABuilder
)来构建它 . (Joshua Bloch Effective Java,第2项) .
现在我不明白的是,其他程序员将如何继承 Class A
以实现他们自己的特定行为 . 我从书中读到了Builder Pattern的缺点,但没有看到提到的子类化 . 我错过了什么吗?这周围有优雅的方式吗?
使构造函数 protected
是我的一个想法,但它仍然会采取公共静态 ClassABuilder
,那么如何在子类中添加新的成员变量?
2 回答
在
ClassB
中创建一个内部公共staticClassBBuilder
builder,它是ClassABuilder
的子类为什么
A
的构造函数使用Buildler
作为参数 . 当用户调用Builder.create
时,构建器必须初始化A
的默认受保护构造函数,然后只需设置A
的字段 . 所以B你可以很容易地从A
继承类B