Отправной точкой является определение некоторых простых правил. Хорошее практическое правило - иметь как можно меньше кода в классе Form. Весь код в классе Form должен быть базовым отображением пользовательского интерфейса.
Мне лично нравится использовать шаблон DAO для организации логики доступа к моей базе данных. Этот шаблон аккуратно инкапсулирует код для доступа и хранения данных, поэтому его можно легко переключать и изменять. В зависимости от сложности базы данных у меня обычно будет 1 DAO на таблицу, но для простых баз данных может быть даже 1 DAO на базу.
MVC - это популярный способ разделения презентации и другой логики, но может быть излишним для простого проекта. Варианты использования также являются хорошим способом инкапсулировать логику и отделить ее от формы.
Пример того, как может выглядеть базовый фреймворк, см. Ниже (примечание: не завершено! Прочитайте полную статью по DAO, чтобы правильно ее реализовать). Смысл этого кода в том, чтобы показать, что в классе Form
нет логики базы данных, это простая однострочная строка, когда кнопка нажата (или что-то еще), отображая пользовательский интерфейс в действие. Если вы решили переключиться с хранилища базы данных на хранилище файлов, было бы нетрудно написать класс FileMyDAO : IMyDAO
, а затем вернуть фабрику. Обратите внимание, что ни один из кодов пользовательского интерфейса не изменится, если вы сделаете это!
public interface IMyDAO
{
void InsertData(int data);
}
public class SqlMyDAO : IMyDAO
{
public void InsertData(int data) { throw new NotImplementedException(); }
}
public class DAOFactory
{
public static IMyDAO GetMyDAO() { return new SqlMyDAO(); }
}
public class MyForm : Form
{
private void Button_Click(object sender, EventArgs e)
{
DAOFactory.GetMyDAO().InsertData(123);
}
}