|
|
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Ктонибудь может объяснить по простому зачем отделять интерфейс у dao и service уровней. Просто возни немного из этого происходит. Я например сначала пишу сам Implemintation, а потом делаю extract interface. Но мне сказали что это обязательно нужно делать для dao и sefrvice уровней. Знаю только по наслышке что это нужно mock объектам. Хотелбы узнать: 1. Как вы делаете этот интерфейс? Может есть полегче путь? 2. Кроме mock объектов для чего он ещё нужен? 3. Как примерно это mock объекты подставляются? Т.е. тут делается отдельная папка? Либо сначала кладут в Impl mock, а потом подменяют реальными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:15:26 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
ccoder, кто мешает привести код и его обсудить? Тока без спринга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:25:29 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Вот тут ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:32:34 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:39:55 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Как вариант - Java Proxy работают только на интерфейсах. Фреймверки их используют для реализации AOP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 20:46:00 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
мы ничего не разделяем у нас файлы *.java по 6-7 тысяч строк современные ide легко справляются с таким количеством строк на этом благоприятно сказался рост производительности рабочих компьютеров разработчиков пять лет назад это было невозможно - уже на 1000-1500 любая ide начинала тормозить алилуя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 22:33:46 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКак вариант - Java Proxy работают только на интерфейсах. Фреймверки их используют для реализации AOP. В EJB 3.1 использование интерфейсов уже не обязательно. А по топику, вопрос к автору зачем вообще нужны интерфейсы? Представьте ситуацию что вы работаете в команде и пишите модуль который взаимодействует с базой по средством DAO, другой человек используя ваш ДАО пишет бизнес логику в другом модуле, вы можете написать публичный интерфейс вашего ДАО с джавадоками и.т.д и закомитить его, а потом потихоньку заниматься его имплементацией, в то время как другой девелопер независимо от вас пишет бизнеслогику и юнитесы мокая ваш интерфейс. Потом выяснилось что ваша имплементация хороша при редких запросах, а при частых тормозит, а третий модуль как раз делает частые запросы. Соответственно вы пишете вторую имплементацию для частых запросов и инжектите ее в интерфейс в третьем модуле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2012, 23:06:42 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
OOsalivan, точно так можно сделать на ООП\классах без интерфейсов. И ещё есть куча способов "разделения труда". Т.е. шаблоны-подходы сейчас очень быстро меняются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 08:33:40 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123OOsalivan, точно так можно сделать на ООП\классах без интерфейсов. И ещё есть куча способов "разделения труда". Т.е. шаблоны-подходы сейчас очень быстро меняются. По разделению труда - может быть. По инкапсуляции - все по старинке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 10:16:18 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123OOsalivan, точно так можно сделать на ООП\классах без интерфейсов. И ещё есть куча способов "разделения труда". Т.е. шаблоны-подходы сейчас очень быстро меняются. Писать на ООП\классах без интерфейсов - это С++ стаил. Здесь это хорошо выражено: "В C++ класс неявно определяет интерфейс. И в силу этого одновременно объявляет тип. При этом единственный интерфейс связывается с единственной реализацией. Множественное наследование и абстрактные классы в C++ - это прежде всего попытка обойти жесткую детерминированность. В Java подобного ограничения нет. Любой интерфейс (тип) может иметь много реализаций. Любой класс может реализовывать много интерфейсов." ООП в java как раз и подразумевает программирование через интерфейсы. В качестве "бест практик" советую посмотреть код например для: java.util java.util.concurrent Вообще заметил такую особенность, что многие люди пришедшие из С++ в java упорно продолжают писать по своему - на выходе говнокод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 12:26:48 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
ОзверинPetro123OOsalivan, точно так можно сделать на ООП\классах без интерфейсов. И ещё есть куча способов "разделения труда". Т.е. шаблоны-подходы сейчас очень быстро меняются. По разделению труда - может быть. По инкапсуляции - все по старинке. а по новизне инжекция + конфигXML есть :) Для этого же самого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 13:24:21 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
OOsalivan, "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. Практика Java говорит об усложнённости и многословности. Также заметил особенность, что в Java много зашоренности шаблонными подходами (скоро синглетон забудем). а говнокод есть везде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 13:29:07 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123OOsalivan, "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. Практика Java говорит об усложнённости и многословности. Также заметил особенность, что в Java много зашоренности шаблонными подходами (скоро синглетон забудем). а говнокод есть везде. Ни везде, а там где люди не понимают и не хотят учиться даже основам, типо зачем мне читать книги по яве если я на ООП в сях два года лобал. Грамотное применение шаблонов уменьшает количество кода в разы, и увеличивает на порядок его читаемость. Заметил что люди не используют шаблоны просто потому что глубоко в них не вникали да и не хотят, но в последствии отсутствие шаблонов в базовых вещах в больших проектах приводит к классам на 6 тысяч строк в процедурном стиле и дублированию - что и есть говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 16:45:31 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
OOsalivanк классам на 6 тысяч строк в процедурном стиле и дублированию - что и есть говнокод.не всё так однозначно - тут рядом тема была про интерфейсы. Люди настолько привыкли их пихать налево и направо, что не замечают разницу между ними и абстрактным классом - конечно, я привёл Статистику - продажную девку империализма - процедурный стиль в Java идёт автоматом, т.к. очень много кода снаружи в виде контейнера. А люди потом спрашивают: "Куда положить объект долгожитель (межсессионный)". Какой нафиг ООП, если в Java есть VO \ POJO \... Т.е. сложные объекты не поддерживает инфраструктура. Попробуйте передать объект DataSet на другой сервер. - уровень сервиса, это как раз и есть процедурный подход (вынос логики за сущности) Я не спорю, интерфейсы в Java имеют иной смысл. Взять MS, который их породил вместе с COM и потом их убил Microsoft отказывается от компонентной объектной модели http://soft.compulenta.ru/44742/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 17:09:40 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
OOsalivanПисать на ООП\классах без интерфейсов - это С++ стаил. Здесь это хорошо выражено: интересная ссылка, но: автор* Образец бесклассовой реализации я против. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 17:26:03 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123OOsalivanк классам на 6 тысяч строк в процедурном стиле и дублированию - что и есть говнокод.не всё так однозначно - тут рядом тема была про интерфейсы. Люди настолько привыкли их пихать налево и направо, что не замечают разницу между ними и абстрактным классом - конечно, я привёл Статистику - продажную девку империализма - процедурный стиль в Java идёт автоматом, т.к. очень много кода снаружи в виде контейнера. А люди потом спрашивают: "Куда положить объект долгожитель (межсессионный)". Какой нафиг ООП, если в Java есть VO \ POJO \... Т.е. сложные объекты не поддерживает инфраструктура. Попробуйте передать объект DataSet на другой сервер. - уровень сервиса, это как раз и есть процедурный подход (вынос логики за сущности) Я не спорю, интерфейсы в Java имеют иной смысл. Взять MS, который их породил вместе с COM и потом их убил Microsoft отказывается от компонентной объектной модели http://soft.compulenta.ru/44742/ Забудет про С++ MS COM и.т.д - если вы рассуждаете о яве. Здесь совсем другая идеология. Почитайте Джошуа Блоха, а еще лучше вместе с тем посмотрите как он писал классы из того же java.util.* Процедурный стиль в яве идет от неграмотности разработчиков. Что вы хотели выразить "очень много кода снаружи в виде контейнера" ? Если вы про аспектно ориентированное программирование, которое в тех же EJB (спринг) контейнерах реализовано по средством проксирования, то АОП вовсе не исключает ООП, а его дополняет. POJO - простой Java-объект, не унаследованный от какого-то специфического объекта и не реализующий никаких служебных интерфейсов сверх тех, которые нужны для бизнес-модели. VO - объект содержащий значение. Чем они вам не угодили в планге ООП ? >>"Попробуйте передать объект DataSet на другой сервер" - шедевр ))) зачем?? >> "- уровень сервиса, это как раз и есть процедурный подход (вынос логики за сущности)" Это не вынос логики за сущность - а вынос логики не относящейся к данной сущности в отдельную - сервис, что и является одной из основ ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 18:15:05 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123OOsalivanПисать на ООП\классах без интерфейсов - это С++ стаил. Здесь это хорошо выражено: интересная ссылка, но: автор* Образец бесклассовой реализации я против. Удачи! Т.е вы против : java.util.Collection java.util.List java.util.Set java.util.Map .... и.т.д ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 18:20:41 |
|
||
|
Зачем отделять интерфес у dao и service уровней
|
|||
|---|---|---|---|
|
#18+
Petro123Я не спорю, интерфейсы в Java имеют иной смысл. Взять MS, который их породил вместе с COM и потом их убил ok, запомним. MS породил интерфейсы, а потом убил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2012, 19:17:35 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37758163&tid=2131920]: |
0ms |
get settings: |
14ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
54ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 428ms |
| total: | 643ms |

| 0 / 0 |
