![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Задался я тут академическим вопросом... Вот есть класс Database и соответственно класс Table.
Мой вопрос как они по вашему должен выглядеть вариант их использования (use case)? Излагаю свои мысли. Вариант №1 - Иерархически. Представим что Table наследник Database. Но тогда любое использование класса Table будет в первую очередь связано с инициализацией коннекции к базе, а это, товарищи, катастрофа, неужели для того чтобы выбрать пяток полей из таблички я должен в конструкторе каждый раз прописывать servername, username и пароль? Вариант №2 - Реализовать тесную взаимосвязь (high cohesion). Иными словами, всякий раз использовать в качестве одного из параметров конструктора класса Table объект Database с установленной коннекцией то есть нечто типа
В общем ни то ни это мне не нравится. Обращаюсь к вам с просьбой, посоветуйте что-нибудь. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Royan,
я бы сделал похоже на второй вариант. Только не передавать Database параметром, а сделать статический метод в Database(например getConnection())), который будет возвращать коннекшн. Его и будет использовать каждая табличка. -------------------- Lost.... |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Royan, для обычного датабазного доступа ни один, ни другой вариант не годятся, потому что там нужно мыслить не в терминах баз данных и таблиц, а в терминах соединений, запросов и резалтсетов.
Другое дело, если ты делаешь эксплорер баз данных. Тогда в принципе классы Database и Table имеют смысл, и связь между ними должна быть типа containment. То есть в классе Database будет что-то вроде :
Но получать и заполнять данные для объектов этих классов нужно будет все равно используя те программные идиомы, о которых я говорил: соединение, запрос, резалтсет. Понятно, что при использовании какого-то средства ORM идиомы могут отличаться, но суть остается та же. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |