Frage

Ich bin nicht so sehr für sprachspezifische Antworten, nur allgemeine Modelle für die Implementierung eines Plugin-System suchen (wenn Sie wissen wollen, ich bin mit Python). Ich habe meine eigene Idee (registrieren Rückrufe, und das ist es), aber ich weiß, dass andere existieren. Was normalerweise verwendet wird, und was es sonst noch sinnvoll?

  

Was meinst du mit einem Plugin-System? Ist Dependency Injection und IOC-Container klingt wie eine gute Lösung?

Ich meine, äh, na ja, eine Art und Weise Funktionalität in das Basisprogramm einzufügen, ohne sie zu verändern. Ich habe nicht die Absicht, es zu definieren, wenn ich festgelegt. Dependency Injection nicht aussehen besonders geeignet für das, was ich tue, aber ich weiß nicht viel über sie.

War es hilfreich?

Lösung

Es ist ein sehr gutes Folge rel="nofollow Software Engineering Radio-, die Sie interessieren könnten.

Für die Zukunft, ich habe hier reproduziert die " Regeln für Enablers “( alternativer Link in dem ausgezeichneten von Erich Gamma Eclipse Beitrag, Kent Beck .

  
      
  • Einladung Rule - Wenn möglich, lassen Sie andere auf Ihre Beiträge beisteuern
  • .   
  • Lazy Loading-Regel -. Die Beiträge werden nur geladen, wenn sie benötigt werden
  •   
  • Sichere Plattform-Regel - Als Anbieter eines Erweiterungspunkt, müssen Sie sich gegen Fehlverhalten auf Seiten der Streck schützen
  • .   
  • Fair Play-Regel - Alle Kunden mit den gleichen Regeln spielen, auch ich
  • .   
  • Explizite Erweiterungsregel - erklären ausdrücklich, wo eine Plattform erweitert werden
  • .   
  • Diversity-Regel - Erweiterungspunkte akzeptieren mehrere Erweiterungen
  • .   
  • Good Fences Rule -. Wenn die Steuerung vor dem Code vorbei, schützen Sie sich
  •   
  • Explicit API-Regel - trennen die API von Interna
  • .   
  • Stabilitätsregel -. Sobald Sie laden jemanden zu tragen, don t die Regeln ändern
  •   
  • Defensive API-Regel - Reveal nur die API, in denen Sie sicher sind, aber mehr API zu offenbaren als Kunden danach fragen vorbereitet werden
  • .   

Andere Tipps

Eine einfache Plugin-Architektur kann eine Plugin-Schnittstelle mit allen Methoden definiert das Plugin sollte implementieren. Das Plugin behandelt Ereignis von der Anwendung und kann die Anwendung des Standardcode, Modellobjekte, etc. verwenden, Dinge zu erledigen. Im Grunde das gleiche wie eine ASP.NET-Formular funktioniert, außer, dass Sie überschreiben, anstatt zu implementieren.

Niemand hat mich gelehrt, diesen Teil, und ich bin kein Experte, aber ich fühle mich: Im Allgemeinen ein Plugin weniger stabil sein wird als ihre Anwendung, so dass die Anwendung immer in Kontrolle sein sollte und nur das Plugin periodische Möglichkeiten geben zu handeln. Wenn ein Plugin ein Beobachter registrieren kann, dann ruft der Delegat sollte versucht / gefangen werden.

In Python können Sie die Eingabe-Punkt-System von setuptools und pkg_resources vorgesehen verwenden. Jeder Einstiegspunkt sollte eine Funktion sein, die Informationen über das Plugin gibt -. Name, Autor, Setup- und Teardown-Funktionen, usw.

Wie wäre es abstrakte Fabrik ? Ihr Basisprogramm definiert, wie die abstrakten Konzepte miteinander in Wechselwirkung treten, aber der Anrufer hat die Umsetzung zur Verfügung zu stellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top