Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем отделять интерфес у dao и service уровней / 19 сообщений из 19, страница 1 из 1
17.04.2012, 20:15:26
    #37757970
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Ктонибудь может объяснить по простому зачем отделять интерфейс у dao и service уровней.
Просто возни немного из этого происходит.
Я например сначала пишу сам Implemintation, а потом делаю extract interface.
Но мне сказали что это обязательно нужно делать для dao и sefrvice уровней.
Знаю только по наслышке что это нужно mock объектам.

Хотелбы узнать:
1. Как вы делаете этот интерфейс? Может есть полегче путь?
2. Кроме mock объектов для чего он ещё нужен?
3. Как примерно это mock объекты подставляются? Т.е. тут делается отдельная папка? Либо сначала кладут в Impl mock, а потом подменяют реальными?
...
Рейтинг: 0 / 0
17.04.2012, 20:25:29
    #37757979
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
ccoder,
кто мешает привести код и его обсудить?
Тока без спринга
...
Рейтинг: 0 / 0
17.04.2012, 20:32:34
    #37757985
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Вот тут )
...
Рейтинг: 0 / 0
17.04.2012, 20:39:55
    #37757996
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
rdmВот тут )
:)
вот поэтому, кодом наглядней видна разница (для незомбированных)
...
Рейтинг: 0 / 0
17.04.2012, 20:46:00
    #37758002
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Как вариант - Java Proxy работают только на интерфейсах. Фреймверки их используют для реализации AOP.
...
Рейтинг: 0 / 0
17.04.2012, 22:33:46
    #37758129
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
мы ничего не разделяем
у нас файлы *.java по 6-7 тысяч строк
современные ide легко справляются с таким количеством строк
на этом благоприятно сказался рост производительности рабочих компьютеров разработчиков
пять лет назад это было невозможно - уже на 1000-1500 любая ide начинала тормозить
алилуя
...
Рейтинг: 0 / 0
17.04.2012, 23:06:42
    #37758163
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
BlazkowiczКак вариант - Java Proxy работают только на интерфейсах. Фреймверки их используют для реализации AOP.

В EJB 3.1 использование интерфейсов уже не обязательно.

А по топику, вопрос к автору зачем вообще нужны интерфейсы?
Представьте ситуацию что вы работаете в команде и пишите модуль который взаимодействует с базой по средством DAO, другой человек используя ваш ДАО пишет бизнес логику в другом модуле, вы можете написать публичный интерфейс вашего ДАО с джавадоками и.т.д и закомитить его, а потом потихоньку заниматься его имплементацией, в то время как другой девелопер независимо от вас пишет бизнеслогику и юнитесы мокая ваш интерфейс. Потом выяснилось что ваша имплементация хороша при редких запросах, а при частых тормозит, а третий модуль как раз делает частые запросы. Соответственно вы пишете вторую имплементацию для частых запросов и инжектите ее в интерфейс в третьем модуле.
...
Рейтинг: 0 / 0
18.04.2012, 08:33:40
    #37758380
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
OOsalivan,
точно так можно сделать на ООП\классах без интерфейсов.
И ещё есть куча способов "разделения труда".
Т.е. шаблоны-подходы сейчас очень быстро меняются.
...
Рейтинг: 0 / 0
18.04.2012, 10:16:18
    #37758514
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Petro123OOsalivan,
точно так можно сделать на ООП\классах без интерфейсов.
И ещё есть куча способов "разделения труда".
Т.е. шаблоны-подходы сейчас очень быстро меняются.

По разделению труда - может быть. По инкапсуляции - все по старинке.
...
Рейтинг: 0 / 0
18.04.2012, 12:26:48
    #37758832
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Petro123OOsalivan,
точно так можно сделать на ООП\классах без интерфейсов.
И ещё есть куча способов "разделения труда".
Т.е. шаблоны-подходы сейчас очень быстро меняются.

Писать на ООП\классах без интерфейсов - это С++ стаил.

Здесь это хорошо выражено:
"В C++ класс неявно определяет интерфейс. И в силу этого одновременно объявляет тип. При этом единственный интерфейс связывается с единственной реализацией. Множественное наследование и абстрактные классы в C++ - это прежде всего попытка обойти жесткую детерминированность.
В Java подобного ограничения нет. Любой интерфейс (тип) может иметь много реализаций. Любой класс может реализовывать много интерфейсов."

ООП в java как раз и подразумевает программирование через интерфейсы. В качестве "бест практик" советую посмотреть код например для:
java.util
java.util.concurrent

Вообще заметил такую особенность, что многие люди пришедшие из С++ в java упорно продолжают писать по своему - на выходе говнокод
...
Рейтинг: 0 / 0
18.04.2012, 13:24:21
    #37758974
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
ОзверинPetro123OOsalivan,
точно так можно сделать на ООП\классах без интерфейсов.
И ещё есть куча способов "разделения труда".
Т.е. шаблоны-подходы сейчас очень быстро меняются.
По разделению труда - может быть. По инкапсуляции - все по старинке.
а по новизне инжекция + конфигXML есть :)
Для этого же самого.
...
Рейтинг: 0 / 0
18.04.2012, 13:29:07
    #37758985
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
OOsalivan,
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
Практика Java говорит об усложнённости и многословности.
Также заметил особенность, что в Java много зашоренности шаблонными подходами (скоро синглетон забудем).
а говнокод есть везде.
...
Рейтинг: 0 / 0
18.04.2012, 16:45:31
    #37759440
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Petro123OOsalivan,
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
Практика Java говорит об усложнённости и многословности.
Также заметил особенность, что в Java много зашоренности шаблонными подходами (скоро синглетон забудем).
а говнокод есть везде.

Ни везде, а там где люди не понимают и не хотят учиться даже основам, типо зачем мне читать книги по яве если я на ООП в сях два года лобал. Грамотное применение шаблонов уменьшает количество кода в разы, и увеличивает на порядок его читаемость. Заметил что люди не используют шаблоны просто потому что глубоко в них не вникали да и не хотят, но в последствии отсутствие шаблонов в базовых вещах в больших проектах приводит к классам на 6 тысяч строк в процедурном стиле и дублированию - что и есть говнокод.
...
Рейтинг: 0 / 0
18.04.2012, 17:09:40
    #37759517
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
OOsalivanк классам на 6 тысяч строк в процедурном стиле и дублированию - что и есть говнокод.не всё так однозначно
- тут рядом тема была про интерфейсы. Люди настолько привыкли их пихать налево и направо, что не замечают разницу между ними и абстрактным классом
- конечно, я привёл Статистику - продажную девку империализма
- процедурный стиль в Java идёт автоматом, т.к. очень много кода снаружи в виде контейнера.
А люди потом спрашивают: "Куда положить объект долгожитель (межсессионный)".
Какой нафиг ООП, если в Java есть VO \ POJO \... Т.е. сложные объекты не поддерживает инфраструктура.
Попробуйте передать объект DataSet на другой сервер.
- уровень сервиса, это как раз и есть процедурный подход (вынос логики за сущности)
Я не спорю, интерфейсы в Java имеют иной смысл.
Взять MS, который их породил вместе с COM и потом их убил
Microsoft отказывается от компонентной объектной модели
http://soft.compulenta.ru/44742/
...
Рейтинг: 0 / 0
18.04.2012, 17:26:03
    #37759565
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
OOsalivanПисать на ООП\классах без интерфейсов - это С++ стаил.
Здесь это хорошо выражено:

интересная ссылка, но:
автор* Образец бесклассовой реализации
я против.
Удачи!
...
Рейтинг: 0 / 0
18.04.2012, 18:15:05
    #37759697
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
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 на другой сервер" - шедевр ))) зачем??

>> "- уровень сервиса, это как раз и есть процедурный подход (вынос логики за сущности)"
Это не вынос логики за сущность - а вынос логики не относящейся к данной сущности в отдельную - сервис, что и является одной из основ ООП
...
Рейтинг: 0 / 0
18.04.2012, 18:20:41
    #37759717
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Petro123OOsalivanПисать на ООП\классах без интерфейсов - это С++ стаил.
Здесь это хорошо выражено:

интересная ссылка, но:
автор* Образец бесклассовой реализации
я против.
Удачи!

Т.е вы против :
java.util.Collection
java.util.List
java.util.Set
java.util.Map
....
и.т.д ?
...
Рейтинг: 0 / 0
18.04.2012, 19:17:35
    #37759815
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Petro123Я не спорю, интерфейсы в Java имеют иной смысл.
Взять MS, который их породил вместе с COM и потом их убил

ok, запомним. MS породил интерфейсы, а потом убил.
...
Рейтинг: 0 / 0
25.04.2012, 20:19:24
    #37771340
jab
jab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем отделять интерфес у dao и service уровней
Под java по неволе само как-то всё разделяется и упорядочевается. :) Что не класс, то отдельный файл. А к нему интерфейсы и т.д.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем отделять интерфес у dao и service уровней / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]