2

私はClass Aかなりの数のメンバー変数を持っています。これを不変にし、構築中にメンバー変数を検証するために、コンストラクターをプライベートにし、内部の public static ビルダー クラス ( ClassABuilder) を使用して構築しました。(Joshua Bloch 有効な Java、項目 2)。

今私が理解していないのは、他のプログラマーがどのようにサブクラス化Class Aして独自の動作を実装するかということです。本から Builder パターンの欠点を読みましたが、サブクラス化が 1 つとして言及されているのを見ませんでした。何か不足していますか?これを回避するエレガントな方法はありますか?

コンストラクターを作成することprotectedは私の考えの 1 つでしたが、それでも public staticClassABuilderを使用するので、サブクラスに新しいメンバー変数を追加するにはどうすればよいでしょうか?

4

2 に答える 2

2

のサブクラスである内部パブリック静的ClassBBuilderビルダーを作成しますClassBClassABuilder

于 2011-12-14T12:38:42.967 に答える
0

コンストラクターをパラメーターとしてA使用する理由。Buildlerユーザーが を呼び出すBuilder.createと、ビルダーは のデフォルトの保護されたコンストラクターを初期化し、次にのフィールドAを単純に設定する必要があります。したがって、BからAクラスを簡単に継承できますBA

于 2011-12-14T12:33:05.420 に答える