Ho osservato molti esempi in C # in cui viene seguito il seguente schema, ma non sono sicuro di come questo ci aiuterà a lungo termine
L'approccio tipico che ho visto è
- crea un'interfaccia
- implementa l'interfaccia
- crea un gestore
- gestore chiamate
Sarebbe davvero bello se qualcuno potesse dirmi come questo approccio aiuterà nel mondo reale senario
interfaccia IRestService
per varie richieste web
public interface IRestService
{
Task<List<TodoItem>> RefreshDataAsync ();
Task SaveTodoItemAsync (TodoItem item, bool isNewItem);
Task DeleteTodoItemAsync (string id);
}
Codice che implementa l'interfaccia IRestService
public class RestService : IRestService
{
HttpClient client;
public List<TodoItem> Items { get; private set; }
public RestService ()
{
var authData = string.Format("{0}:{1}", Constants.Username, Constants.Password);
var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));
client = new HttpClient ();
client.MaxResponseContentBufferSize = 256000;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
}
public async Task<List<TodoItem>> RefreshDataAsync ()
{
}
public async Task SaveTodoItemAsync (TodoItem item, bool isNewItem = false)
{
}
public async Task DeleteTodoItemAsync (string id)
{
}
}
Manager
che chiama i metodi implementati
public class TodoItemManager
{
IRestService restService;
public TodoItemManager (IRestService service)
{
restService = service;
}
public Task<List<TodoItem>> GetTasksAsync ()
{
return restService.RefreshDataAsync ();
}
public Task SaveTaskAsync (TodoItem item, bool isNewItem = false)
{
return restService.SaveTodoItemAsync (item, isNewItem);
}
public Task DeleteTaskAsync (TodoItem item)
{
return restService.DeleteTodoItemAsync (item.ID);
}
}
per eseguire la richiesta
TodoManager = new TodoItemManager (new RestService ());
TodoManager.GetTasksAsync ();
alcune domande mi vengono in mente
- perché abbiamo bisogno di un manager perché non possiamo usare solo
RestService
- se un giorno ho bisogno di sviluppare un modulo per recuperare i dati relativi ai contatti dal server allora ho bisogno di aggiungere metodi in
IRestServie
aaddContact()
,deleteContact()
,getContact()