Один и тот же ведущий работает с разными репозиториями - PullRequest
0 голосов
/ 01 октября 2008

Вы управляете одним и тем же докладчиком, работая с разными репозиториями, используя шаблон MVP?

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

AddCustomerPresenter presenter = new AddCustomerPresenter(this,customerRepository); 
presenter.AddCustomer(); 

presenter = new AddCustomerPresenter(this,archiveRepository); 
presenter.Archive(); 

Ответы [ 2 ]

1 голос
/ 01 октября 2008

Почему бы не иметь

IRepository { /* .. */ }
CustomerRepository : IRepository { /* .. */ }
ArchiveRepository : IRepository { /* .. */ }

, а затем

AddCustomerPresenter {
IRepository Store {get;set;}
public AddCustomerPresenter(IRepository store) { /*...*/ }
/*...*/
}

Ваш докладчик НЕ ДОЛЖЕН иметь статической зависимости от ЛЮБОЙ реализации IRepository. Если вы обнаружите, что другого пути нет, вам нужно переделать свой дизайн, потому что он, вероятно, имеет недостатки.

0 голосов
/ 01 октября 2008

Спасибо, Уилл!

Но CustomerRepository и ArchiveRepository не имеют никакого отношения. Это две совершенно разные вещи.

...