|
|
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Есть интерфейс Код: java 1. 2. 3. 4. 5. Есть классы которые его наследуют от 1 до N, Назовем их Example1 Example2 Example3 ... ExampleN Бин A с базовыми методами и его наследники от 1 до X A1 A2 A3 ... AX Вопрос как узнать какой наследник установлен в методе setData Examplу Код: java 1. писать Код: java 1. Будет не красиво, как дслеать это правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 18:13:17 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Вот так ещё можно. Не понятно только зачем. Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 19:14:15 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Оператор instanceof d вашем случае всегда будет возвращать true , поскольку опирается не на тип ссылки, а на свойства объекта, на который она ссылается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 07:21:37 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
ivanov-voidОператор instanceof d вашем случае всегда будет возвращать true , поскольку опирается не на тип ссылки, а на свойства объекта, на который она ссылается. По-моему вопрос и был о свойствах объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 14:36:15 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
avp.mkВот так ещё можно. Не понятно только зачем. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Избежать хотел if Может паттерн есть, которого я незнаю =((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 11:23:44 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Здесь вам надо понять только один момент - при правильном проектировании вам НИКОГДА не будет надо узнавать, что реально стоит за интерфейсом. НИКОГДА. Вот и все, на этом можно закрывать топик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 11:48:48 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
svenomЗдесь вам надо понять только один момент - при правильном проектировании вам НИКОГДА не будет надо узнавать, что реально стоит за интерфейсом. НИКОГДА. Вот и все, на этом можно закрывать топик В принципе +1. Зачем вам выносить логику зависящую от типа объекта из самого объекта? Если есть какая то логика, которая запускаться в зависимости от типа - вам всего лишь надо ввести этот метод в интерфейс иерархии и переопределить его там где нужно, остальное дело возьмет на себя полиморфизм. Единственное исключение - это когда у вас нет контроля над исходным кодом - в этом случае используйте паттерны вроде Visitor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 13:16:29 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Здесь вам надо понять только один момент - при правильном проектировании вам НИКОГДА не будет надо узнавать, что реально стоит за интерфейсом. НИКОГДА. Вот и все, на этом можно закрывать топик Как надо было правильно проектировать JDBC? http://docs.oracle.com/javase/6/docs/api/java/sql/Wrapper.html#unwrap%28java.lang.Class%29 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 14:09:53 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
авторБудет не красиво, как дслеать это правильно? По-моему, вполне нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 14:13:35 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪЗдесь вам надо понять только один момент - при правильном проектировании вам НИКОГДА не будет надо узнавать, что реально стоит за интерфейсом. НИКОГДА. Вот и все, на этом можно закрывать топик Как надо было правильно проектировать JDBC? http://docs.oracle.com/javase/6/docs/api/java/sql/Wrapper.html#unwrap%28java.lang.Class%29 Вот не надо смешивать теплое с мягким, по-моему из контекста ясно было, что иерархия дана изначально. Да и ваш пример с jdbc - ну и где там instanceof? Да, есть небольшие сложности связанные с инициализацией объекта, обусовленные плагинной архитектурой, а после того как объект создан - работа идет через интерфейс, опять же никаких instanceof ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 14:41:39 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Да и ваш пример с jdbc - ну и где там instanceof? Как раз метод unwrap нужен, чтобы можно было получить соединение и сделать по нему instanceof. Например, приложение может работать с несколькими СУБД. Получаем connection, делаем instanceof, и если окажется, что имеем дело с Ораклом, то включаем Oracle Client Result Cache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 16:36:20 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪДа и ваш пример с jdbc - ну и где там instanceof? Как раз метод unwrap нужен, чтобы можно было получить соединение и сделать по нему instanceof. Например, приложение может работать с несколькими СУБД. Получаем connection, делаем instanceof, и если окажется, что имеем дело с Ораклом, то включаем Oracle Client Result Cache. так это и есть пример неправильной архитектуры. ЖДБЦ задумывался как единый интерфейс к разным базам данных. Цели достич не удалось (неважно кто виноват) и приходится использовать костыли в виде выяснения с каким сервером идёт работа и написания разного кода для разных скл-серверов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 16:59:01 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Добрый день, 1024! > так это и есть пример неправильной архитектуры. ЖДБЦ задумывался как > единый интерфейс к разным базам данных. Цели достич не удалось (неважно > кто виноват) и приходится использовать костыли в виде выяснения с каким > сервером идёт работа и написания разного кода для разных скл-серверов. Именно! Явы со стандартными библиотеками прекрасный пример не только того, как надо делать, но и (местами) как НЕ надо делать. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:02:50 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪДа и ваш пример с jdbc - ну и где там instanceof? Как раз метод unwrap нужен, чтобы можно было получить соединение и сделать по нему instanceof. Например, приложение может работать с несколькими СУБД. Получаем connection, делаем instanceof, и если окажется, что имеем дело с Ораклом, то включаем Oracle Client Result Cache.0_о Ваш юскейс меня немного шокирует, если честно :) Нормальная работа через JDBC - это работа с интерфейсами JDBC. Никакого анврапа быть не должно. Но то JDBC и был придуман - чтобы абстрагировать пользователя от деталей реализации курсоров и прочей СУБД-лабудени. Анвраппинг требуется только в крайне редких случаях и то, для того что бы использовать какую-либо сугубо специализированную фишку того или иного драйвера. Сам факт наличия необходимости анврапить JDBC-объекты с вероятностью 99% говорит о кривом дизайне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:05:35 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
Добрый день, svenom! > Но то JDBC и был придуман - чтобы абстрагировать > пользователя от деталей реализации курсоров и прочей СУБД-лабудени. А ещё от вкусностей конкретных БД. Оно, конечно, хорошо, что можно об этом не думать. Но жаль, что об этом так тяжело думать. В delphi тоже сначала BDE сделали- похоже, кстати, на JDBC. А потом пошли DOA, IBX и прочее. И победили. -- Алексей JID: alxt@ya.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:11:59 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
GKS_SamaraА ещё от вкусностей конкретных БД. Оно, конечно, хорошо, что можно об этом не думать. Но жаль, что об этом так тяжело думать. В delphi тоже сначала BDE сделали- похоже, кстати, на JDBC. А потом пошли DOA, IBX и прочее. И победили. Верно, любая абстракция подразумевает под собой снижение детализации. Так происходит на уровнях СУБД-JDBC, то же самое происходит на уровне JDBC-Hibernate и т.д.. Это сознательное решение - простота в обмен на "фиченасыщенность". Следующий момент - про какие фичи вообще идет речь? Большинство "вкусностей" в реальной жизни лежит на уровне SQL-запросов, и лишь мааааалая толика чего-то стоящего может бы получена путем ковыряния внутри сознательно(!!!) скрытых внутренностей JDBC-драйвера. Так что мы тут уходим в сторону расуждений о каких-т окрайне редких и муторных ситуаций, корнер-кейсов, которые по сути лишь подтверждают правило, что надо стремиться всецело работать через те интерфейсы, которые даны прикладному разработчику, а не ковырять кишки закрытого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:34:30 |
|
||
|
Правильное наследование
|
|||
|---|---|---|---|
|
#18+
1024Цели достич не удалось (неважно кто виноват) и приходится использовать костыли в виде выяснения с каким сервером идёт работа и написания разного кода для разных скл-серверов.А где-то есть другой вариант? Без костылей и написания разного кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:57:12 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37814829&tid=2131701]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 301ms |
| total: | 426ms |

| 0 / 0 |
