Sto scrivendo un sistema di callback per BitBucket e GitHub che dovrebbe modificare il nostro sito su determinati eventi in BitBucket o GitHub.
È ragionevole creare una classe base come GitIntegration
per gestire sia BitBucket ( BitBucket
class) che GitHub ( GitHub
class) come suoi ereditari. Nota che queste tre classi sono agnostiche del nostro sito. La loro unica responsabilità è comunicare con BitBucket e GitHub, non fare nulla con il nostro sito.
Ma c'è ancora un'altra classe nel gioco (chiamiamola OurSiteGitIntegration
) che farà la modifica effettiva dei nostri siti, quando riceve messaggi da BitBucket o GitHub.
Dobbiamo in qualche modo collegare OurSiteGitIntegration
con un codice particolare per BitBucket e GitHub.
L'idea migliore che ho trovato è la seguente:
Crea OurSiteGitIntegration
una classe astratta e crea due mixin:
-
OurSiteBitBucket
(derivato daOurSiteGitIntegration
,BitBucket
) -
OurSiteGitHub
(derivato daOurSiteGitIntegration
,GitHub
)
C'è un modo ancora più conciso e diretto? (senza i mixins)
Io uso Python Django.