Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Иерархия или связь (cohesion) для классов Database, и Table 
:(
    Опции темы
Royan
  Дата 15.11.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Задался я тут академическим вопросом... Вот есть класс Database и соответственно класс Table. 

Мой вопрос как они по вашему должен выглядеть вариант их использования (use case)?

Излагаю свои мысли.

Вариант №1 - Иерархически. Представим что Table наследник Database. Но тогда любое использование класса Table будет в первую очередь связано с инициализацией коннекции к базе, а это, товарищи, катастрофа, неужели для того чтобы выбрать пяток полей из таблички я должен в конструкторе каждый раз прописывать servername, username и пароль?

Вариант №2 - Реализовать тесную взаимосвязь (high cohesion). Иными словами, всякий раз использовать в качестве одного из параметров конструктора класса Table объект Database с установленной коннекцией то есть нечто типа

Код

Database db = new Database(serverName, username, password);// Здесь устанавливается коннекция к базе
Table table = new Table(db, tableName);


В общем ни то ни это мне не нравится. Обращаюсь к вам с просьбой, посоветуйте что-нибудь.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Kangaroo
Дата 15.11.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Royan
я бы сделал похоже на второй вариант. 
Только не передавать Database параметром, а сделать статический метод в Database(например getConnection())), который будет возвращать коннекшн. Его и будет использовать каждая табличка.


--------------------
Lost....
PM MAIL MSN   Вверх
Stampede
Дата 15.11.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Royan, для обычного датабазного доступа ни один, ни другой вариант не годятся, потому что там нужно мыслить не в терминах баз данных и таблиц, а в терминах соединений, запросов и резалтсетов.

Другое дело, если ты делаешь эксплорер баз данных. Тогда в принципе классы Database и Table имеют смысл, и связь между ними должна быть типа containment. То есть в классе Database будет что-то вроде :

Код

public class Database {
    private List<Table> tables;
    // ...
}


Но получать и заполнять данные для объектов этих классов нужно будет все равно используя те программные идиомы, о которых я говорил: соединение, запрос, резалтсет. Понятно, что при использовании какого-то средства ORM идиомы могут отличаться, но суть остается та же.


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.