Наследование класса, который построен с использованием статического внутреннего класса Builder - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть Class A с большим количеством переменных-членов. Чтобы сделать его неизменным и проверять переменные-члены во время конструирования, я сделал его конструктор частным и использовал для его построения внутренний открытый статический класс компоновщика (ClassABuilder). (Джошуа Блох Эффективная Ява, пункт 2).

Теперь я не понимаю, как другие программисты будут создавать подклассы Class A для реализации своего собственного специфического поведения. Я прочитал недостатки Builder Pattern из книги, но не увидел подклассов, упомянутых как один. Я что-то пропустил? Есть ли элегантный способ обойти это?

Создание конструктора protected было одной из моих мыслей, но она все равно будет принимать открытую статическую ClassABuilder, так как добавить новые переменные-члены в подкласс?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Создание внутреннего открытого статического ClassBBuilder компоновщика в ClassB, который является подклассом ClassABuilder

0 голосов
/ 14 декабря 2011

Почему конструктор A использует Buildler в качестве параметра.Когда пользователь вызывает Builder.create, сборщик должен инициализировать защищенный конструктор по умолчанию A, а затем просто установить поля A.Таким образом, B вы можете легко наследовать класс B от A

...