Avatar billede knaldeglad Nybegynder
22. februar 2006 - 20:37 Der er 9 kommentarer og
1 løsning

Designpattern / arkitektur

Hej folkens.. , jeg skal lave et system der skal bestå af flere plugnins i form af forms, der kan loades fra en liste og vises  et vindue på en anden form, Jeg er lidt i tvivl om hvilket designpattern der passer på denne type program.

Formen hvori de foskellige plugins kan loades fra kan ikke vide noget om funktionalitet af de enkelte plugins og ej heller navn eller antal....  er der nogen der har ide til hvor jeg kan gafle noget info på denne type app.
Avatar billede arne_v Ekspert
22. februar 2006 - 20:48 #1
jeg vil ikke kalde problem stillingen for arkitektur

men der maa kunne anvendes flere GoF patterns

factory, facade og observer var oplagte

men maaske ogsaa visitor, adapter, decorator

masser af muligheder

NB: lad vaere med at bruge patterns bare for at bruge dem
Avatar billede soreno Praktikant
22. februar 2006 - 21:30 #2
Er det bevidst at din "main" form ikke kan vide noget om de plugins der loades ?
Er plugin forms'ene nogle du selv skal lave ?
Avatar billede knaldeglad Nybegynder
22. februar 2006 - 21:46 #3
jaee masser af patterns kan bruges det er da rigtigt...  men er der ikke et man kan sige at det passer bedre end noget andet...  nu er castle jo ik rigtig et pattern, men det er da i den stil, og vel da nok egnet hertil, men er der  ikke et disideret pattern er egner sig til plugins......      mht til soreno, så ja det er bevidst,  og ja jeg skal selv lave de første plugins, men ikke dem der kan komme senere som kan indeholde helt nye metoder...
Avatar billede aaberg Nybegynder
22. februar 2006 - 21:50 #4
Du skal selvfølgelig køre dine plugins via et interface. Via dette interface skal dit program kunne finde navn og beskrivelse af dine plugins (Til at vise på listen af plugins). Derudover skal der være en metode til at starte pluginnen (f.eks. IPlugin.Execute()). Så kan du via noget Reflection dynamisk loade alle dll filer, og søge efter alle klasser som implementere interfacet, og tilføje deres navn og beskrivelse til listen.
Avatar billede soreno Praktikant
22. februar 2006 - 21:53 #5
Så må jeg foreslå at du kigger nærmere på template method pattern.

Lav en abstract class (AbstractForm) som arver fra winform og indeholder f.eks. disse metoder:
public abstract String getFormName();
public abstract String getFormDescription();
(andre relevante metoder)

Lad så dine plugin forms arve fra AbstractForm.

Det vil så kræve at dine plugin forms implementer de abstrakte metoder, som du så kan benytte fra din main form. Det giver dig mulighed for at specificere et interface som dine plugin forms skal implementere og dermed have en lille smule kontrol med plugin forms.
Avatar billede knaldeglad Nybegynder
22. februar 2006 - 23:09 #6
hm...  ja, reflection... template method pattern....  læser lige den.. men det er vel ikke nødvendigt med reflection...  men et interface er klart tror jeg,  der skal jo da også være noget kontrol med om det enkelte plugin passer ind i applikationen og det er vel defineret i interfacet.  det drejer sig om at main app holder noget data som skal behandles (af de forskellige plugins) på forskellig vis, lidt i stil med filtre i photoshop.  (dog mindre kompliceret)...
Avatar billede soreno Praktikant
23. februar 2006 - 07:36 #7
Ok, med den ekstra information må det være strategy pattern du søger.
Den har samme modul-struktur som template method pattern, men et anderledes intend.
Avatar billede arne_v Ekspert
22. april 2006 - 23:10 #8
tid at få afsluttet her ?
Avatar billede knaldeglad Nybegynder
23. april 2006 - 08:50 #9
Jo....., jeg har fået en del ud af at studere strategy pattern og template method pattern, men har besluttet ikke at lægge mig fast op af et pattern så soreno smid et svar så vi kan fa afsluttet denneher...
Avatar billede soreno Praktikant
23. april 2006 - 12:02 #10
Ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester