Creo un'interfaccia per l'accesso al database in un database MySQL. Attualmente, questo è l'unico modo per accedere al giorno, ma per rendere più facile il test e nel caso in cui l'accesso ai dati potrebbe cambiare, ho usato un'interfaccia.
Tuttavia, ora mi trovo di fronte al dilemma di quali metodi dovrei mettere sull'interfaccia e su quali metodi dovrei applicare concretamente all'implementazione. C'è una regola generale per questo?
Fornirò un esempio qui sotto dove ho alcune operazioni CRUD per un'interfaccia ICar
, ma poi alcune altre funzioni di utilità che sono solo sull'implementazione concreta. Dovrebbero essere anch'essi sull'interfaccia? Non vorrei che un utente dovesse implementare ogni metodo se non ne avesse bisogno?
interface ICar {
Car GetCar(int id);
void DeleteCar(int id);
void InsertCar(Car car)
Car UpdateCar(Car car);
}
class Car : ICar {
Car GetCar(int id) {}
void DeleteCar(int id) {}
void InsertCar(Car car) {}
Car UpdateCar(Car car) {}
// methods not on interface, but should they be
public string GetCarVIN(Car car) {}
public string GetCarColor(Car car) {}
public string GetCarMake(Car car) {}
public string GetCarModel(Car car) {}
public string GetCarOwner(Car car) {}
}