А зачем придумывалось наследование? Что бы реализовать повторное использование кода https://en.wikipedia.org/wiki/Inheritance_(object-... ( Прям с начала второго предложения) . У Вас как раз и стоит задача о повторном использовании кода. Вы предложили одно решение, я другое. Если Вы единственный разработчик, то можете реализовать как угодно, если Вы работаете в команде, то я бы сделал это так, что бы другим разработчикам пришлось меньше прыгать по коду и искать кто там кого наследует. В JS очень много костылей и разбираться с ними другому человеку бывает тяжко. Ведь кто бы мог подумать, что []+[]="" !
"Нужно выделить его в отдельный класс, что бы можно было использовать одну базу во всех виджета." - такой был вопрос, а реализаций можно придумать 100500.
"в каждом виджете прописывать каждый метод от сервиса." - нет. Методы прописываются один раз в одном сервисе (в конечном итоге они что то же должны делать, а не просто мусолить html). Если общий функционал использует скоуп то создается директивка 'xxx' а потом return { ...,require: 'xxx,... .
Фабрики - это в основном синглтон, а контроллеров можно +100500 создать (одного типа). Ответ зависит от задачи: если после какого то действия пользователю нужно всегда показывать trol-face на всех страницах приложения (пока он не перезагрузить страницу), то лучше использовать фабрику; если это анимированный слайдер - то тут заряжает контроллер.
Меня как раз Сouchbase привлекла XDCR (docs.couchbase.com/couchbase-manual-2.0/#cross-dat... Несколько серверов, где будет крутиться кеш - уже сериализованный Json из разных коллекций mongo для, скажем какой нибудь новостной ленты.