Archief - [PROG] Modulair programmeren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

passero

Legacy Member
Ik ga beginnen aan een vrij grote applicatie. Een van de bedoelingen is dat het modulair moet zijn wat wil zeggen dat andere mensen gemakkelijk extra module's kunnen schrijven voor de applicatie.
Daarvoor is er waarschijnlijk de nodige API nodig van mijn kant en ook een manier om die module's in te pluggen.

Nu is mijn vraag: bestaan er patterns om zo zaken te schrijven of richtlijnen ofzo?

fretn

Legacy Member
een richtlijn waar ik op denk: wees consistent in de naamgeving van je variabelen enz van je API

Ollie

Legacy Member
passero zei:
Nu is mijn vraag: bestaan er patterns om zo zaken te schrijven of richtlijnen ofzo?

Een duwtje in de goede richting:

Richtlijn: Open/Closed Principle
Patterns (onder andere): Template Method, Strategy, ...

Het kan een goed idee zijn de source code te bekijken (indien beschikbaar) van een goed gedesignde API. In het geval van Java/J2EE is het Spring Framework aan te raden. Deze maakt gretig gebruik van design patterns (onder andere dus Template Method en Strategy).

passero

Legacy Member
Ik heb het eerder over hoe maak ik mijn applicatie open.
Stel mijn applicatie is klaar en een andere persoon maakt er een module voor. Die module moet "geregistreerd" en ingeplugd worden in het systeem. Het is zo iets wat ik niet direct weet hoe.
Hoe maak ik mijn systeem open zodat andere mensen de mogelijkheid hebben om bijvoorbeeld te reageren op acties. Voorbeeld extra validatieregels, extra schermen,... dit allemaal zodat gebruikers die extra modules gewoon hoeven te installeren...

jodeman

Legacy Member
Ik zou het zo doen

Code:
private ArrayList<Controller> controllers;

// Deze methode in uw main thread
for (Controller c : controllers) {
       c.update();
}

public void addController(Controller c) {
       controllers.add(c);
}

// interface bvb
public interface Controller {
       public void update()
}

// Dan in een module bijvoorbeeld
public class Extensie implements Controller {
       public void update() {
               //start eender wat
       }
}

// Registratie van een controller
//in uw programma code

MainThread.addController(new Extensie());

Het enige dat je dan moet doen is een controller aanmaken die overerft van de interface Controller en daarna toevoegen aan de mainthread.

Tyfius

Legacy Member
Kijk eens naar de broncode van Banshee. Dat is een music player ontwikkeld in .NET die via plugins werkt. Je kan op dezelfde manier werken.

VisualImpact

Legacy Member
passero zei:
Ik ga beginnen aan een vrij grote applicatie. Een van de bedoelingen is dat het modulair moet zijn wat wil zeggen dat andere mensen gemakkelijk extra module's kunnen schrijven voor de applicatie.
Daarvoor is er waarschijnlijk de nodige API nodig van mijn kant en ook een manier om die module's in te pluggen.

Nu is mijn vraag: bestaan er patterns om zo zaken te schrijven of richtlijnen ofzo?

Kan je wat meer vertellen over de te gebruiken taal, platform(en) en
ondersteunde OS'en ?

[AiR] LeViaTHaN

Legacy Member
Ik weet niet in welke taal je werkt maar ik werk .NET met CAB. Dit is een framework ontwikkeld door het Microsoft Pattern & Practices team en die gasten kunnen schoon dinges schrijven :)

CAB staat voor Composite UI Application Building block. Het pluggen van extra modules gebeurt hier op basis van een xml configuratie en simpelweg een initialize method in uw modules die dan geregistreerd worden in die xml configuratie.
Kan zijn dat je hier niets van begrijpt maar ik zou zeggen bekijk het CAB framework maar eens ;)

passero

Legacy Member
Zal het zeker eens bekijken. Het is inderdaad met het .net framework dat ik werk, c#.net om precies te zijn :)
Thx for the info
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan