Vraag mbt te implementeren patroon

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 07-07 20:37

xces

To got or not to got..

Topicstarter
Ik wil het volgende implementeren, maar ik weet niet of het een patroon is en zo ja wat de naam van het patroon is en of ik misschien op andere zoekwoorden moet programmeren.

Ik wil een boom (XML bestand) samenstellen door 'componenten' aan te klikken die in het XML bestand moeten komen. Per component wil ik eigenlijk aangeven welke andere componenten erbij horen en dit moet recursief zijn. Het gaat uiteindelijk om een deployment van een stuk software wat uit componenten bestaat.

Als voorbeeld;
Component A
Component B
Component C
Component D

Ik klik aan dat ik "component C" wil hebben. Voordat ik "component C" kan deployen moet ik ook "component A" uitrollen, maar voordat ik "component A" kan uitrollen moet ik weer eerst "component B" en "component D" uitrollen.

Uiteindelijk wil ik dat de XML er dus als volgt uit komt te zien (let op de volgorde):
xml
- Component B
- Component D
- Component A
- Component C

Is hier een patroon voor, en zo nee, hoe zou ik zoiets kunnen implementeren zonder dat ik conflicten krijg (circular references)?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:00

Janoz

Moderator Devschuur®

!litemod

Zoekwoord wat je nodig hebt is iig "dependency management" en "dependency resolver". Daarvoor zijn al talloze tools beschikbaar. Maar mocht je desondanks toch een eigen wiel willen maken dan zul je iets doen waarbij je per component aan kunt geven van welke andere componenten hij direct afhangt. Je tool kan vervolgens inderdaad recursief de boel doorlopen om te kijken wat er allemaal nodig is. Het op volgorde zetten is vervolgens niks meer dan er voor zorgen dat een item altijd VOOR de items staat die van hem afhankelijk zijn. (Meest rudimentaire implementatie is om telkens het component aan de lijst toe te voegen die niet afhankelijk is van de rest van de overgebleven componenten) Circulaire references kunnen NIET voorkomen worden door je tool. Je tool moet ze detecteren en vervolgens de ontwikkelaar op zijn flikker geven dat hij de afhankelijkheden niet goed gelegd heeft.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 09:14
Ik heb pas een boek gekocht dat ingaat op modulariteit en afhankelijkheden en patterns daaromtrent: Java Application Architecture - Modularity Patterns with Examples using OSGi. Ik ben er nog lang niet doorheen, maar ik ben er tot nu toe zeer over te spreken. De focus op Java is eigenlijk vrij beperkt tot (tot nu toe) een paar code voorbeelden en het gebruik van JAR files als de meest logische container voor een module. Over OSGi wordt geloof ik pas verderop in 't boek gebruikt om voorbeelden toe te lichten, dus de titel schrikt misschien ten onrechte af.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Mocht je specifiek naar het algoritme op zoek zijn die de volgorde van items bepaald, dan ben je op zoek naar een topological sort. Uiteraard is er ook bestaande software die dit al voor je doet zoals hierboven te zien is.