# IExecutableExtension und die zugehörige Factory



## splitshade (7. September 2007)

Hallo,

ich versuche mir gerade klar zu machen, was der Unterschied bzw der UseCase für einmal IExecutableExtension und IExecutableExtensionFactory ist.
Meinem Verständnis nach ist das so:
Wenn ich ein Plugin an einen ExtensionPoint "andocke", und hier z.B. konkrete Klassen zu meinem Projekt hinzufügen möchte, mach ich dies ja mit "createExecutableExtension(..)".
Will ich der konkreten Klasse noch Initialisierungsparameter mitgeben, sollte diese das Interface "IExecutableExtension" implementieren, da ich hier deklarativ in xml Paramter angeben kann. Will ich jetzt noch genauere Initialisierungen machen, benutze ich statt 
IExecutableExtension eine IExecutableExtensionFactory.
Mein Plugin welches an den ExtensionPoint andockt, liefert also eine IExecutableExtensionFactory, welche mir dann mit der Methode "create()" ein konkretes Object meiner Klasse 

Die Implementierung der Methode könnte dann wohl so aussehen

```
public Object create() throws CoreException
{
  return new ImplementierungMeinerKlasse(param1,param2,param3);
}
```

Ist das soweit korrekt? oder hakts irgendwo bei meinem Verständnis?
Über eine AUfklärung würde ich mich freuen.
Gruß

Martin


----------



## Thomas Darimont (7. September 2007)

Hallo,

bei einer IExecutableExtension wird intern einfach sowas wie ein Class.forName("...").newInstance() gemacht, wobei dann die Möglichkeit besteht über setInitializationData(...) auf die in der Konfiguration hinterlegten Elemente zuzugreifen. Bei einer IExecutableExtension  ist also der Weg wie diese Extension erzeugt wird (per newInstance())... schon festgelegt.

Mit der IExecutableExtensionFactory hast du hier mehr Freiheiten. So könntest du beispielsweise die Instanzen nicht händisch per newInstance(...) erzeugen sondern einen "externen" Objekt Container wie einen Spring ApplicationContext oder einen Guice Injector nach entsprechnd Konfigurierten Instanzen befragen. Du hast hier halt die volle Kontrolle darüber WIE die Instanzen für die Extension erzeugt werden.

Gruß Tom


----------



## splitshade (7. September 2007)

Hi Thomas,

ja vielen Dank, dann verhält es sich schon so ähnlich wie erwartet.

Gruß

Martin


----------

