Автоматически связывать воедино методы класса - PullRequest
0 голосов
/ 02 ноября 2019

Ниже приведен пример класса. Я ищу способ лучше создавать составные методы из этих фундаментальных функциональных методов.

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 и мне нужно написать еще одну вспомогательную функцию.

Есть ли альтернативный способ склеивания этих функций вместе?

Я изучилсостав, поток, труба, перегрузки, абстрактные классы, решение не ясно.

...