класс DataFetcher имеет набор методов
для выполнения каких-то http запросов
class DataFetcher {
get() {}
post() {}
put() {}
delete() {}
}
реализуй метод для получения пользователя по http
добавляем в класс DataFetcher этот метод getUser и используем внутри метод get
вроде все хорошо, читабельно нормальная!
class DataFetcher {
get() {}
post() {}
put() {}
delete() {}
getUser(id: number) {
this.get('http://localhost:5000/' + id);
}
}
- сделай метод для получения реквизитов
- сделай метод для получения списка клиентов
класс постепенно у нас разрастается!!!
class DataFetcher {
get() {}
post() {}
put() {}
delete() {}
getUser(id: number) {
this.get('http://localhost:5000/' + id);
}
getRequisites(id:number){
this.get('http://localhost:5000/requisites' + id);
}
getClients(id:number){
this.get('http://localhost:5000/clients' + id);
}
}
Мы немного улучшаем код
мы выносим методы get,post,put,delete в отдельный класс HttpClient
class HttpClient{
get(url: string) {}
post() {}
put() {}
delete() {}
}
class DataFetcher{
client: HttpClient;
constructor(client){
this.client = client;
}
getUser(id: number) {
this.get('http://localhost:5000/' + id);
}
getRequisites(id:number){
this.get('http://localhost:5000/requisites' + id);
}
getClients(id:number){
this.get('http://localhost:5000/clients' + id);
}
}
обобщенный DataFetcher мы разбиваем на два класса
- UserService
отвечает за логику с пользователем
получение, создание, удаление, - RequisiteService
отвечает за логику с реквизитами
не стоит пересоздавать лишние классы
все должно быть в меру
- не стоит создавать save_user_service
- не стоит создавать get_user_service
теперь каждый класс отвечает за одну зону ответственности
class HttpClient{
get(url: string) {}
post() {}
put() {}
delete() {}
}
class UserService{
client: HttpClient;
constructor(client){
this.client = client;
}
getOneUser(id: number) {}
getAllUser() {}
}
class RequisitesService {
createRequisites() {}
getRequisites() {}
updateRequisites() {}
}