0

J'ai un Main.fla (contrôlé par Main.as) qui a un enfant nommé Slide (un Movieclip contrôlé par une autre classe, Slide.as).Cette injection de dépendance est-elle dans ActionScript 3?

Parfois, mon objet Diapositive doit appeler la méthode "nextSlide" sur son père, objet principal. Pour ce faire j'ai essayé "this.parent.nextSlide()", mais j'ai eu cette erreur:

1061: Appel à une méthode possiblement indéfinie nextSlide à travers une référence avec le type statique flash.display: DisplayObjectContainer.

Alors, j'ai essayé passer l'objet père par constructeur:

slide var: Slide = new Slide (ce)

Et, sur ma classe Slide, a utilisé ceci:

public function Slide(myParent:Main) { 
    this.myParent = myParent; 
} 
... 
myParent.nextSlide(); 

Est-ce correct? Est-ce que cette injection de dépendance?

Merci.

+0

sur une note de côté, vous devriez probablement restructurer comment vous créez tout cela. J'aime penser à la POO en essayant de modéliser quelque chose qui existe dans la vie réelle et d'abstraire et encapsuler l'information. Puisque les objets dans la vie réelle ne changent pas, votre objet ne devrait pas avoir à changer trop. Par conséquent, un objet Diapositive ne doit pas contrôler la classe Main. Une diapositive devrait juste contenir peut-être un animage, un numéro de diapositive, etc. Une classe de contrôle accepterait l'entrée pour changer les diapositives, puis notifierait la main. L'utilisation d'écouteurs d'événements et de dépêches est un excellent moyen de communiquer différents objets – Allan

Répondre

1

Il est correct dans le sens où cela fonctionnera. Mais vous pouvez aussi jeter la propriété parent du type Main, après quoi vous pouvez appeler la méthode nextSlide:

Main(this.parent).nextSlide(); 

De cette façon, vous indique au compilateur de traiter la propriété parent comme un objet Main. Si la propriété parent n'est pas un objet Main, vous obtiendrez une erreur au moment de l'exécution.

Je n'appellerais pas ce que vous faites injection de dépendance.

2

À mon avis: oui c'est. C'est probablement la forme la plus basique d'injection de dépendance, mais elle injecte toujours une dépendance dans l'instance de classe. Je cite James Shore's article "Dependency Injection démystifié":

Dependency injection means giving an object its instance variables. Really. That's it.

voir: http://jamesshore.com/Blog/Dependency-Injection-Demystified.html

Il y a bien sûr beaucoup plus à injection de dépendance, il y a de grands cadres comme le printemps construit autour de ce concept. Un peu désordonné, mais toujours une bonne lecture: l'article wikipédia sur DI http://en.wikipedia.org/wiki/Dependency_injection il y a aussi un article plus complexe à ce sujet de Martin Fowler, son aîné et pour être honnête, quand je l'ai lu la première fois, je ne savais pas quoi il parle de http://martinfowler.com/articles/injection.html

Questions connexes