Dostęp do metod Parenta.

0

Witam,

Mam pytanko. Właśnie planuję aplikacje, która używa systemów plug-in.

Myślałem, aby główny program (nazwijmy go Parent) wykonywał zadania takie jak:

  • Połączenie do bazy (w celu zapisywania informacji wysłanych przez pluginy).
  • Procesowaniem informacji wysłanych przez pluginy.
  • Ładowaniem pluginów.

Następnie pluginy dostarczały informacje.

Chciałem zrobić to w miarę 'on-line', czyli aby plugin sam raportował otrzymane dane
(plugin wywoływał metodę z Parent np. process_Info(value)).

Ale o ile nie ma problemu z wywoływaniem metod z Plugina przez parenta, o tyle problem pojawia się podczas próby wywołania metody z parenta przez plugina.

Czy ktoś mógłby mi powiedzieć jak wykonać takie 'coś' ?

0

myParent.processInfo(value);?

Czy ktoś mógłby mi powiedzieć jak wykonać takie 'coś' ?

Mam rozumieć, że konstruując obiekt plug-inu nie przekazujesz mu obiektu parenta? To nie możesz.. chyba że statyczne.

0

Najlepiej zrobić to całkowicie inaczej. Parent tylko ładowałby i szukałby pluginów, a pluginy dostarczałyby całą funkcjonalność. Tak jest w NetBeans Platform. Polecam się z tym zapoznać. Ma dość dobry system pluginów.

0

dzięki.

Zamiast NetBeans, zdecydowałem się na Eclipse Equinox, bardzo fajny framework :)

0
<reklama> Podobno NetBeans Platform jest łatwiejsza w programowaniu - nie wymaga OSGi (chociaż 6.9 obsługuje), zamiast tego można wykorzystać prostsze NetBeans Modules. No i Eclipse jest robione pod SWT, do którego jest dużo mniej kontrolek niż do Swinga (do Swinga jest też bardzo dobry Matisse GUI Builder dostępny w NetBeans). </reklama> :P
0

Zdecydowałem się na Equinox, bo z eclipse miałem wcześniej doczynienia... zobaczymy czy to dobry wybór ;)

Co do SWT to fakt, ilość kontrolek jest minimalna. Jednak cały program ma działać tylko spod konsoli (bez GUI), więc chwilowo kontrolki mi nie potrzebne. Ale przy tworzeniu klienta, spojrzę na NetBeansa zobaczymy co oferuje ;)

Ciągnąc dalej temat. Są jakieś sprawdzone metody, jak takie programy powinny wyglądać ?

Otóż ja wymyśliłem (i jak na chwilę obecną działa) taką strukturę.

Bundle 1: Paczka z interfejsami typu IPluginReader, IPluginWritter itp.
Bundle 2: Paczka wykrywająca pluginy i ładująca je automagicznie.
Bundle 3: Paczka zapisująca dane do plików (implementuje IPluginWritter)
Bundle 4-5: Paczki czytające dane z różnych źródeł (zwracają różne dane, jedna stringi druga inty/floaty) (Implementuje IPluginReader).

Koncepcja jest taka, że wszystko ma działać przy minimalnym wczytaniu np (1,2,4) - odczytuje dane wyrzuca na ekran ale nigdzie nie zapisuje bo nie ma wczytanej 3
itp.

Pytanie jest następujące, czy jest jakiś sposób na łatwe zaimplementowanie aby po doczytaniu IPluginWrittera, wtyczki IPluginReader same poinformowały ze mają coś do zapisania ?

Czy po prostu dla każdego IPluginReader muszę robić Bundle 2 np.

String tmpVar = IPluginReader(4).readString();
IPluginWritter.storeString(tmpVar);


Number tmpVar = IPluginReader(5).readNumber();
IPluginWritter.storeNumber(tmpVar);

Kod nie jest kodem z programu, więc nie patrzcie na jego poprawność, to tylko taki przykład.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.