2017-09-20 2 views
0

Je développe api qui obtiennent des données d'autres apis (facebook, google ...). Mon idée est de créer différents référentiels pour chaque API. Pour exempl:obtenir des données à partir de différents apis

Interface ReaderRepositoryInterface 
{ 
    getEvents(); 
    getComents() 
} 

class FacebookReaderRepository implements ReaderRepositoryInterface 
{ 
    getEvents() 
    { 
    //call the api facebook method 
    } 

    getComments() 
    { 
    //call the api facebook method 
    } 
} 

GoogleReaderRepository ...

Chaque classe (FacebookReaderRepository, GoogleReaderRepository ...) sera dans l'infrastructure et met en œuvre les méthodes qui ReaderRepositoryInterface a. L'idée est donc que les services d'application obtiennent des données d'un référentiel spécifique et créent une entité avec les informations obtenues.

Je veux savoir si j'applique solide dans le bon sens?

+0

quelle langue utilisez-vous pour cela? –

Répondre

0

Ce que vous envisagez de faire ici est une bonne application des principes SOLID jusqu'à présent. Faites attention à ce qui viendra plus tard:

Assurez-vous que dans ces autres parties de votre code, votre code doit rester indépendant de l'implémentation. Par exemple, si vous allez chercher des données dans un contrôleur:

<?php 

// doing some stuff - begins 

$repository = $this->getRepository(); 

$events = $repository->getEvents(); 

// doing some stuff - continues 

/** 
* @return ReaderRepositoryInterface 
*/ 
private function getRepository() 
{ 
    $repository = new FacebookReaderRepository(); 

    return $repository; 
} 

L'idée ici est que, dans le « faire des choses », votre code doit être conscient qu'il reçoit un ReaderRepositoryInterface et utilise uniquement la fonction qui vient avec il. Il ne doit pas savoir que le $repository est, en fait, un FacebookReaderRepository. C'est SOLIDE appliqué. Les avantages de cette approche sont que vous pouvez facilement remplacer un FacebookReaderRepository par un TwitterReaderRepository sans modifier votre code «faire quelques trucs». Ne modifiez que le contenu de votre méthode getRepository(). Vous pouvez également faire attention au "Principe de ségrégation d'interface": si votre FacebookReaderRepository est trop grand, vous pourriez vouloir créer un FacebookApiClient qui ne traite que les appels HTTP, étant utilisé par un FacebookReader en effectuant un traitement sur les données récupérées , et celui-ci implémentera le ReaderRepositoryInterface.