2017-04-03 2 views
0

Je veux faire une bibliothèque qui va être utilisé et configurable par d'autres personnes, en utilisant AKKA acteurs. Je souhaite créer un acteur Repository auquel un type de stockage sera injecté par l'utilisateur de la bibliothèque, tel que "MemoryDatabase" ou "FileDatabase" ou tout élément qui étend une classe ou un acteur défini (voir question 2).Acteur Personnalisation pour Akka bibliothèques

1) Quelle est la meilleure façon pour un utilisateur de spécifier les options (y compris ses propres ceux créés)?

2) Si « MemoryDatabase » être un enfant acteur de dépôt, ou tout simplement une classe normale comme un champ/propriété de l'acteur du référentiel dans ce cas?

Merci!

-Jojolepro

Edit: Je veux faire un acteur qui ressemble à

class Repository extends Actor{ 

val repoType:DataStorageType = ... 

def receive:Receive={} 

} 

Ce que je veux savoir la meilleure façon pour un utilisateur final de cette bibliothèque pour spécifier le champ repoType, Considérant que Repository est déjà dans une hiérarchie d'acteur prédéfinie.

+0

Eh bien ... la question est trop ouvert et il devrait y avoir au moins 100 façons tout aussi agréable de le faire en fonction de divers autres facteurs. Je suis désolé de vous informer qu'à moins que vous ne fournissiez une question plus concrète, la plupart d'entre nous seront incapables de vous aider. –

+0

Édité ma question pour être plus précis –

Répondre

0

Cela dépend si vous voulez que l'utilisateur de mettre dans un cas concret ou simplement un type. En ignorant tout type de système DI que vous pourriez utiliser, je passerais simplement l'instance concrète au constructeur de l'acteur via les accessoires lorsque l'acteur est démarré, mais cela dépendrait de l'instance concrète étant thread safe, car pas nécessairement cet acteur le gérerait . Si vous voulez que l'acteur possède le référentiel, demandez à l'utilisateur de passer l'instance d'usine ou tapez les accessoires et donc le constructeur.