É um cheiro de inveja?

5

No meu aplicativo, eu queria separar a GUI e a lógica de negócios com algum tipo de ModelViewPresenter-Design.

Portanto, fiz algumas classes do Presenter, que não têm muito mais código do que as propriedades com as quais meus formulários são vinculados.

Para fornecer persistência (load and save) Eu fiz novas classes com métodos definindo as propriedades das classes de apresentadores acima mencionadas para separar as preocupações (apresentar dados para a GUI e persistir os dados).

Como minhas classes de apresentadores agora são apenas datacontainers sem nenhum comportamento, gostaria de saber se seria melhor mesclar persistência e apresentador para simplificar meu código. Parece muito exagerado para mim como é no momento.

Aqui está um trecho de C # de uma das classes de persistência:

public override void LoadData()
{
    Presenter = (PersonalColorSettingsPresenter) PresenterFactory.GetPresenter(m_User, "ColorSettings");
    loadData();
}

private void loadData()
{
    var color = Settings.GetSelectionColor(m_User);

    Presenter.ActiveRowBackColor = color.BackColor;
    Presenter.ActiveRowBackColor2 = color.BackColor2;
    Presenter.IsActiveRowBackgroundGradientActive = color.GradientActive;
    Presenter.ActiveRowForeColor = color.ForeColor;
}
    
por MW1971 20.01.2015 / 08:32
fonte

1 resposta

5

Não, você não deve mesclar persistência em seu apresentador. Pode não parecer importante agora, mas isso seria uma violação do Princípio da Responsabilidade Única, e se tais decisões fossem tomadas repetidamente a longo prazo, isso levaria a um código que é difícil de manter.

Como observação, se você estiver usando o padrão MVP, sua camada de persistência deverá interagir com os objetos do modelo, não com o apresentador. O apresentador deve ler os dados do modelo para passar para a exibição e, em seguida, gravar os resultados de volta para o modelo após a conclusão. Um módulo de armazenamento de dados (por exemplo, algum tipo de repositório ou DAO - por favor, não use registros ativos aqui, pois isso também viola o SRP) é usado para carregar e salvar os objetos do modelo. O apresentador deve saber pouco sobre como isso funciona, ou seja, se possível, ele não deve interagir com o armazenamento de dados (que aconteça em um nível mais alto), mas se tiver que fazê-lo por meio de uma interface abstrata.

    
por 20.01.2015 / 10:03
fonte

Tags