Здравствуйте, komaz, Вы писали:
K>Почему методы IsValidUser, IsExist и IsActive что-то принимают? Они статические? Или класс User на самом деле не то чем кажется?
Могут быть и методы без параметров, а можно перегрузить и так так. А можно в конструкторе инициализировать объект данными о логине и пароле. Это не столь важно.
Важно понять идею и то как же все таки правильнее реализовать, что бы в последствии можно было использовать классы повторно.
В случае если я опишу метод следующим образом:
public Boolean IsValidUser(String login, String password)
{
...
String query = @"SELECT user_id FROM tbl_users WHERE tbl_users.login = @login AND tbl_users.password = @password";
...
}
То какова вероятность того, что пользователь назовет таблицу и имена полей именно так, а не например users? Крайне мала.
Значит привязывать запрос к определенной таблице/полям не совсем правильно. А если пользователю придется переопределять метод в дочернем классе, то тогда можно оставить тело метода пустым. Пусть переопределяет как хочет. Такой вариант, тоже не особо нравится.
С другой стороны, если в каком-то конфиге сопоставить данные о таблице и ее полях. Получится громоздкий конфиг файл. Таблица пользователей же не одна да и полей можно быть какое-то количество.
Как вариант еще с библиотекой классов поставлять некий скрипт, создающий таблицы используемые в ней, автоматически с теми названиями которые удобны мне, как разработчику данных классов.
Вот и пробую найти наиболее удачное решение.