Да, вы можете наследовать от LinkedList
, точно так же, как вы можете наследовать от любого не запечатанного класса. Тем не менее, я не думаю, что это хорошая идея. Наследование - это не просто повторное использование методов. Оно передает "это" отношение . Хотя схема цепочки ответственности, безусловно, может быть реализована с использованием связанного списка, цепочка ответственности не является связным списком.
При наследовании от класса LinkedList
вы будете выставлять все его открытые методы. Вы также должны спросить, все ли эти методы имеют смысл для вашего класса. Я не думаю, что LinkedList.Average()
имеет какое-либо значение для цепи ответственности.
Вместо этого вы должны хранить обработчики в связанном списке, который является частным членом данных вашей цепочки ответственности.
Можете ли вы реализовать что-то вроде открытого класса MyHandler: LinkedList? Это похоже на рекурсивное определение, но компилятор не считает это проблемой.
Да, это совершенно законно. Это рекурсивное определение, которое может пригодиться, например, при реализации составного шаблона . Это будет
Я бы не советовал писать этот класс по тем же причинам, по которым ваша цепь ответственности не должна наследоваться от LinkedList
, но это возможно.