Можно ли считать, что подобная архитектура написана с использованием паттерна MVP?
Изучаю паттерн MVP. Используя различные примеры из интернета, написал свой небольшой проект с MVP. Проект простой: одна форма, два DataGridView. В одном выводится список клиентов из базы данных, в другом выводится список счетов конкретного клиента. Хотел узнать. Полностью ли выдержан данный паттерн в проекте? Или же есть какие-то замечания? Код проекта ниже:
Форма ClientForm:
public partial class ClientForm : Form, IClientView
{
public ClientForm()
{
InitializeComponent();
}
public DataGridView ClientDgv { get => Clients_dataGridView; }
public DataGridView AccountsDgv { get => Accounts_dataGridView; }
private void LoadClients_button_Click(object sender, EventArgs e)
{
ClientPresenter p = new ClientPresenter(this, new ClientModel());
p.LoadClients();
}
private void LoadAccounts_button_Click(object sender, EventArgs e)
{
int clientCode = Convert.ToInt32(ClientDgv.CurrentRow.Cells["ClientCode"].Value.ToString());
ClientPresenter p = new ClientPresenter(this, new ClientModel());
p.LoadAccounts(clientCode);
}
}
IClientView:
public interface IClientView
{
DataGridView ClientDgv { get; }
DataGridView AccountsDgv { get; }
}
ClientPresenter:
public class ClientPresenter
{
private ClientModel _clientModel;
private IClientView _clientView;
private readonly DBConnection _conn = DBConnection.GetInstance("C:\\DB\\Database.FDB", true);
public ClientPresenter(IClientView view, ClientModel model)
{
_clientView = view;
_clientModel = model;
}
public void LoadClients()
{
string selectClientsQuery = "SELECT * FROM Clients";
_conn.ExecuteQuery(selectClientsQuery);
_clientModel.ClientDt = _conn.ResultAsDataTable();
_clientView.ClientDgv.DataSource = _clientModel.ClientDt;
}
public void LoadAccounts(int clientCode)
{
string selectAccountsQuery = $"SELECT * FROM Accounts WHERE ClientCode = {clientCode}";
_conn.ExecuteQuery(selectAccountsQuery);
_clientModel.AccountsDt = _conn.ResultAsDataTable();
_clientView.AccountsDgv.DataSource = _clientModel.AccountsDt;
}
}
ClientModel:
public class ClientModel
{
public DataTable ClientDt;
public DataTable AccountsDt;
}