Я присутствовал на собеседовании, и меня попросили разработать класс для следующего требования.Предположим, у меня есть класс A, и он может иметь любое количество детей, то есть подклассов.Класс A имеет метод doSomething (), который синхронизируется.Требования:
- Обязательно, чтобы все подклассы A переопределяли метод doSomething () .
- Переопределяли метод doSomething () всех подклассов должен быть поточно-безопасным по своей природе.
- Все подклассы 'должны иметь положение для реализации собственной логики для своих реализаций метода doSomething ().
Конструктор класса A - это я (дизайнер), чтобы решить, как его реализовать.
Дизайнер не может контролировать, сколько подклассов будет создано или как они будут созданы, т.е., разработчик может писать код только для суперкласса .
Я предложил сделать класс абстрактным, а также метод doSomething () абстрактным.Это означало бы, что классы, расширяющие мой класс, обязательно предоставляют свой собственный метод doSomething ().
Однако я не мог ответить, что именно в моем классе A обеспечит безопасность потоков для моих дочерних классов, а также только дляметод doSomething ().
Хотя он намекнул, он сказал, что хитрость должна быть сделана в конструкторе класса.
Есть идеи?