Re: ООП, Java, полиморфизм, generics...
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 31.01.08 14:18
Оценка: +1
Здравствуйте, Cybernelly, Вы писали:

C>...


C>Насколько я понимаю, полиморфизм и наследование представляют базу ООП.

C>Возникшие уже позже технологии построения абстракций более высокого уровня,
C>а именно параметризованные классы (шаблоны, generics) являются усложнением
C>изначальной методологии и должны использоваться аккуратно, поскольку вполне
C>способны "загромоздить" архитектуру и в какой-то момент стать ощутимым препятствием к
C>развитию модели.

Не согласен. Шаблоны — одно из проявлений полиморфизма, а именно static polymorphism

C>К сожалению, мне не всегда удается своими доводами убедить некоторых разработчиков.

C>Простой пример. Нужно реализовать базовую логику поддержки объектом набора состояний и реакций на их смену.
C>То есть имеем связку: State-StateFul-StateChangeEvent-StateChangeListener. И, конечно, большое количество наследников данных сущностей.

C>Какими доводами мне следует убеждать человека, что злоупотребление Generics в данном случае

C>действительно усложняет архитектуру системы... человек реализует это хозяйство примерно так:

C>...


C>В итоге, на конечных уровнях иерархий классов мы видим нагромождение generics...

C>На мой взгляд, представленная логика должна быть реализована без использования generics вообще.
C>Возможные явные преобразования типов в конкретных подклассах (без которых можно даже и обойтись) не являются проблемой, которую надо обязательно решать вводя generics...

Все зависит от задачи. Если хочется применять представленные обертки на широком фронте работ, то почему бы не использовать типизацию? Если для реализации логики действительно нужны какие-то характерные особенности классов (т.е. если вместо типов-параметров S и T использовать Object, то потом придется даункастить к нужному типу), то решение оправдано.


C>Или все-таки я не прав?

C>Свою точку зрения я основываю еще и на коде J2SE/J2EE, где таких конструкция я никогда не встречал.
C>МОжет ли кто-нибудь дать ссылки на методологию применения шаблонов/generics?
C>(Возможно, вопрос стоит перебросить в раздел "Архитектура...")

j2se — первое, что приходит в голову — коллекции, thread local. j2ee — думаю, что в новых технологиях будут использоваться дженерики (там, где это уместно). Вообще, имхо дженерики не панацея и не модная фишка, которую надо использовать где только можно. Это просто одна из возможностей, предоставляемых языком, и использовать ее надо только тогда, когда она реально удобна и полезна. Это то же самое, что прочитать GoF и начать тыркать шаблоны где надо и где не надо.
http://denis-zhdanov.blogspot.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.