Rozważam dwa różne projekty klas do obsługi sytuacji, w której niektóre repozytoria są tylko do odczytu, a inne są do odczytu i zapisu. (I nie przewidują żadnych potrzebę tylko do zapisu repozytorium.)Który jest lepszy projekt klasy C# do czynienia z czytaniem i pisaniem w porównaniu tylko do odczytu
Klasa Projekt 1 - zapewnić pełną funkcjonalność w klasie bazowej, a następnie wystawiać zastosowanie funkcjonalności publicznie w klasach podrzędnych
public abstract class RepositoryBase
{
protected virtual void SelectBase() { // implementation... }
protected virtual void InsertBase() { // implementation... }
protected virtual void UpdateBase() { // implementation... }
protected virtual void DeleteBase() { // implementation... }
}
public class ReadOnlyRepository : RepositoryBase
{
public void Select() { SelectBase(); }
}
public class ReadWriteRepository : RepositoryBase
{
public void Select() { SelectBase(); }
public void Insert() { InsertBase(); }
public void Update() { UpdateBase(); }
public void Delete() { DeleteBase(); }
}
Klasa Projekt 2 - klasa odczytu dziedziczy tylko do odczytu klasy
public class ReadOnlyRepository
{
public void Select() { // implementation... }
}
public class ReadWriteRepository : ReadOnlyRepository
{
public void Insert() { // implementation... }
public void Update() { // implementation... }
public void Delete() { // implementation... }
}
Czy jeden z tych projektów jest wyraźnie silniejszy od drugiego? Jeśli tak, to który i dlaczego?
P.S. Jeśli to brzmi jak pytanie o pracę domową, nie jest, ale możesz go używać jako jednego, jeśli chcesz :)
Dlaczego konieczne jest rozróżnienie dwóch rodzajów repozytorium? –
@John, cóż, być może nie, ale myślałem, że chcę się upewnić, że chronię tabele bazy danych, które nie powinny się zmieniać od przypadkowych zmian. – devuxer
@DanM: co DBA ma do powiedzenia na ten temat? Większość poczuje, że miejsce do ochrony bazy danych znajduje się w bazie danych, a nie w kodzie. –