22. februar 2006 - 20:37Der 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.
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...
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.
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.
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)...
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.
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...
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.