Ниже приведен пример класса. Я ищу способ лучше создавать составные методы из этих фундаментальных функциональных методов.
class UserService {
getUserByUuid (uuid) {}
getUserByEmail (email) {}
async getScopedMembers (user) {
return await this.getScopedMembers(user)
}
getMembers (scopedMembers) {
return scopedMembers.map(scopedMember => scopedMember.member)
}
getContacts (members) {
return _.uniqBy(members.map(member => member.contact), 'id')
}
getContactsWithoutSelf ({ contacts, user }) {
return contacts.filter(contact => contact.id !== user.contact.id)
}
}
Проблема, с которой я сталкиваюсь, заключается в создании простого в использовании API с этими функциями.
Снова и снова мне приходится создавать много подробных функций, использующих их, например getMembersByUuid(uuid)
, которые сначала получают пользователя, затем getScopedMembers
, а затем getMembers
. Затем я нахожу, что мне нужна еще одна функция getMembersByUser
и мне нужно написать еще одну вспомогательную функцию.
Есть ли альтернативный способ склеивания этих функций вместе?
Я изучилсостав, поток, труба, перегрузки, абстрактные классы, решение не ясно.